Django

Code

Ticket #8854 (closed: invalid)

Opened 10 months ago

Last modified 10 months ago

url tag and reverse function do not work

Reported by: keizie Assigned to: nobody
Milestone: Component: Core framework
Version: SVN Keywords:
Cc: Triage Stage: Unreviewed
Has patch: 0 Needs documentation: 0
Needs tests: 0 Patch needs improvement: 0

Description

urls.py

from django.conf.urls.defaults import *
from tagging.models import Tag

urlpatterns = patterns('tagging.views',
    (r'^tag/(?P<tag>\w+)/', 'tagged_object_list', {'queryset_or_model':Tag, 'related_tags':True}),
)
urlpatterns += patterns('page.views',
    (r'^$', 'show'),
    (r'^rev/(?P<rev>\w+)/', 'show'),
    (r'^diff/(?P<old>\s+)/(?P<new>\s+)/', 'diff'),
    (r'^edit/', 'edit'),
    (r'^info/', 'info'),
    (r'^delete/', 'delete'),

    url(r'^recent/', 'recent', name='recent'),
    (r'^search/((?P<needle>\s+)/)?', 'search'),
    (r'^tag/', 'tag'),

    (r'^(?P<action>\w+)/', 'unknown'),
)

And try:

$ ./manage.py shell
Python 2.4.3 (#1, May 24 2008, 13:47:28) 
[GCC 4.1.2 20070626 (Red Hat 4.1.2-14)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.core.urlresolvers import reverse
>>> reverse('recent')
Traceback (most recent call last):
  File "<console>", line 1, in ?
  File "/usr/lib/python2.4/site-packages/django/core/urlresolvers.py", line 249, in reverse
    return iri_to_uri(u'%s%s' % (prefix, get_resolver(urlconf).reverse(viewname,
  File "/usr/lib/python2.4/site-packages/django/core/urlresolvers.py", line 226, in reverse
    possibilities, pattern = self.reverse_dict.get(lookup_view, [(), ()])
  File "/usr/lib/python2.4/site-packages/django/core/urlresolvers.py", line 160, in _get_reverse_dict
    for name, (matches, pat) in pattern.reverse_dict.iteritems():
  File "/usr/lib/python2.4/site-packages/django/core/urlresolvers.py", line 160, in _get_reverse_dict
    for name, (matches, pat) in pattern.reverse_dict.iteritems():
  File "/usr/lib/python2.4/site-packages/django/core/urlresolvers.py", line 168, in _get_reverse_dict
    self._reverse_dict[pattern.callback] = bits, p_pattern
  File "/usr/lib/python2.4/site-packages/django/core/urlresolvers.py", line 135, in _get_callback
    raise ViewDoesNotExist, "Tried %s in module %s. Error was: %s" % (func_name, mod_name, str(e))
ViewDoesNotExist: Tried delete in module page.views. Error was: 'module' object has no attribute 'delete'
>>> 

Even admin page breaks with url template tag, like {% url django-admindocs-docroot as docsroot %}.

r8759 and r8934 tested.

Attachments

Change History

09/03/08 14:47:48 changed by mtredinnick

  • needs_better_patch changed.
  • needs_tests changed.
  • needs_docs changed.

Do you have a delete() method in your page.views module? If not, that's the problem. Your URLConf file must be valid for reverse() to work.

09/03/08 14:53:46 changed by keizie

page/views.py have no def delete().

Do you mean that each view module have to implement delete method to be integrated with reverse()? But 'URL dispatcher' of documentation don't mention that delete() method is necessary.

09/03/08 14:56:17 changed by Alex

No, but each reference to a view must be valid, you have a view named delete, for reverse to work that function needs to exist.

09/03/08 14:57:58 changed by mtredinnick

  • status changed from new to closed.
  • resolution set to invalid.

If you're still having trouble with this, please ask on the django-users mailing list. There's no bug in Django here.

09/03/08 15:11:59 changed by keizie

Oops. Just found what I've missed between urls and views. Sorry to bother you.


Add/Change #8854 (url tag and reverse function do not work)




Change Properties
Action