#10151: url tag causes TypeError: dict objects are unhashable
---------------------------+------------------------------------------------
 Reporter:  pclerie        |       Owner:  nobody    
   Status:  new            |   Milestone:            
Component:  Uncategorized  |     Version:  1.0       
 Keywords:                 |       Stage:  Unreviewed
Has_patch:  0              |  
---------------------------+------------------------------------------------
 I'm trying out the examples in Practical Django Projects. When using named
 views with the url tag I get a TypeError: dict objects are unhashable (see
 the traceback below). The interesting thing is that it only happens
 _once_, the first time through. On following passes no problem occurs. I
 have reproduced the same behaviour with django.core.urlresolvers.reverse.

 It seems I can work around this by putting a call to reverse in a
 try...except block in an {{{__init__.py.}}} That forces the first error
 and then no more problems.

 Thanks

 Philippe

 =================

 Traceback follows:
 {{{
 Environment:

 Request Method: GET
 Request URL: http://denebola.logisys.ht:8000/blog/
 Django Version: 1.0.2 final
 Python Version: 2.5.2
 Installed Applications:
 ['django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.sites',
  'django.contrib.admin',
  'django.contrib.flatpages',
  'coltrane',
  'tagging']
 Installed Middleware:
 ('django.middleware.common.CommonMiddleware',
  'django.contrib.sessions.middleware.SessionMiddleware',
  'django.contrib.auth.middleware.AuthenticationMiddleware')


 Template error:
 In template /home/philippe/prj/django/templates/base.html, error at line
 33
    Caught an exception while rendering: dict objects are unhashable
    23 :

    24 : <div id="header">

    25 :   <div id="logo">

    26 :   </div>

    27 :   <h1>L'iconoclaste</h1>

    28 :   <h5>Élucubrations d'un étranger chez lui.</h5>

    29 : </div>

    30 :

    31 : <div id="menu">

    32 :   <ul>

    33 :     <li><a href=" {% url coltrane_entry_archive_index %}
 ">Accueil</a>

    34 :     {% block menu %}

    35 :     {% endblock %}

    36 :   </ul>

    37 : </div>

    38 :

    39 : <div id="main">

    40 :   <div id="leftcol">

    41 :     <div id="navigation">

    42 :       <h4>Navigation</h4>

    43 :       <ul>

 Traceback:
 File "/var/lib/python-support/python2.5/django/core/handlers/base.py" in
 get_response
   86.                 response = callback(request, *callback_args,
 **callback_kwargs)
 File "/var/lib/python-
 support/python2.5/django/views/generic/date_based.py" in archive_index
   49.     return HttpResponse(t.render(c), mimetype=mimetype)
 File "/var/lib/python-support/python2.5/django/template/__init__.py" in
 render
   176.         return self.nodelist.render(context)
 File "/var/lib/python-support/python2.5/django/template/__init__.py" in
 render
   768.                 bits.append(self.render_node(node, context))
 File "/var/lib/python-support/python2.5/django/template/debug.py" in
 render_node
   71.             result = node.render(context)
 File "/var/lib/python-support/python2.5/django/template/loader_tags.py" in
 render
   97.         return compiled_parent.render(context)
 File "/var/lib/python-support/python2.5/django/template/__init__.py" in
 render
   176.         return self.nodelist.render(context)
 File "/var/lib/python-support/python2.5/django/template/__init__.py" in
 render
   768.                 bits.append(self.render_node(node, context))
 File "/var/lib/python-support/python2.5/django/template/debug.py" in
 render_node
   71.             result = node.render(context)
 File "/var/lib/python-support/python2.5/django/template/loader_tags.py" in
 render
   97.         return compiled_parent.render(context)
 File "/var/lib/python-support/python2.5/django/template/__init__.py" in
 render
   176.         return self.nodelist.render(context)
 File "/var/lib/python-support/python2.5/django/template/__init__.py" in
 render
   768.                 bits.append(self.render_node(node, context))
 File "/var/lib/python-support/python2.5/django/template/debug.py" in
 render_node
   81.             raise wrapped

 Exception Type: TemplateSyntaxError at /blog/
 Exception Value: Caught an exception while rendering: dict objects are
 unhashable

 Original Traceback (most recent call last):
   File "/var/lib/python-support/python2.5/django/template/debug.py", line
 71, in render_node
     result = node.render(context)
   File "/var/lib/python-support/python2.5/django/template/defaulttags.py",
 line 373, in render
     url = reverse(self.view_name, args=args, kwargs=kwargs)
   File "/var/lib/python-support/python2.5/django/core/urlresolvers.py",
 line 254, in reverse
     *args, **kwargs)))
   File "/var/lib/python-support/python2.5/django/core/urlresolvers.py",
 line 227, in reverse
     possibilities = self.reverse_dict.getlist(lookup_view)
   File "/var/lib/python-support/python2.5/django/core/urlresolvers.py",
 line 161, in _get_reverse_dict
     for name in pattern.reverse_dict:
   File "/var/lib/python-support/python2.5/django/core/urlresolvers.py",
 line 169, in _get_reverse_dict
     self._reverse_dict.appendlist(pattern.callback, (bits, p_pattern))
   File "/var/lib/python-support/python2.5/django/core/urlresolvers.py",
 line 130, in _get_callback
     self._callback = get_callable(self._callback_str)
   File "/var/lib/python-support/python2.5/django/utils/functional.py",
 line 128, in wrapper
     if mem_args in cache:
 TypeError: dict objects are unhashable
 }}}

-- 
Ticket URL: <http://code.djangoproject.com/ticket/10151>
Django <http://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to