Error: Unhashable Type: 'dict'
Solution 1:
You are passing bad arguments to HttpResponse constructor signature is
HttpResponse.__init__(content='', content_type=None, status=200, reason=None, charset=None)
and I thinks you want to use {'List_of_date': List_of_date}
as context for template render.
So you rather want call something like (i don't know what menas your args variable)
return HttpResponse(template.render(Context({'List_of_date': List_of_date})))
Solution 2:
When do you generally get an unhashable type: 'dict'
error?
When you try to use a dictionary as a key to perform lookup in another dictionary, you get this error.
For example:
In [1]: d1 = {'a':1, 'b':2}
In [2]: d2 = {'c':3}
In [3]: d2[d1] # perform lookup with key as dictionary 'd1'---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-3-163d2a314f4b> in <module>()
----> 1 d2[d1]
TypeError: unhashable type: 'dict'
Why are getting this error?
This is because you have passed wrong arguments to HttpResponse
class when creating its instance as pointed out by @Francis.
When you do HttpResponse(template.render(context), args, {'List_of_date': List_of_date})
, then template.render(context)
becomes content
, args
becomes the content_type
and the dictionary {'List_of_date': List_of_date}
becomes the status
of the response object.
Now internally, Django performs a lookup based on the status
of the response object to set the reason_phrase
on response object. Since the status
is not an integer but a dictionary, the above error occurs.
Answer :
You need to use render()
shortcut provided by Django instead as @Daniel also mentioned which is perfect for what you are intending to do.
It will render the template for you and automatically render the template with RequestContext
instance. You can do something like:
return render(template_name, {'List_of_date': List_of_date})
Post a Comment for "Error: Unhashable Type: 'dict'"