Django输出CSRF令牌作为对象而不是值

时间:2010-02-23 14:40:30

标签: django django-forms csrf django-csrf

我在Django中以简单的POST形式在CSRF令牌上苦苦挣扎。该模板生成以下CSRF输出,而不是输出令牌的值:

<input type='hidden' name='csrfmiddlewaretoken' value='{'csrf_token':django.utils.functional.__proxy__ object at 0x1255690>}' />

我在模板中使用{% csrf_token %},我该如何解决这个问题? (我正在使用Django 1.2)

编辑:确切的表格代码是:

<form name="foo" action="url" method="POST">
   {% csrf_token %}

   <select>
       {% for key, account in accounts.items %} 
           <option value="{{ key }}">{{ account }}</option>
       {% endfor %}
   </select>
<input type="submit">    
</form>

1 个答案:

答案 0 :(得分:1)

我找到了原因:在settings.py中我添加了:django.middleware.csrf.CsrfViewMiddleware 但不是:django.middleware.csrf.CsrfResponseMiddleware

所以在django.middleware.csrf.CsrfResponseMiddlewaredjango.middleware.csrf.CsrfViewMiddleware之后添加django.middleware.common.CommonMiddleware,你就可以了。