我在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>
答案 0 :(得分:1)
我找到了原因:在settings.py中我添加了:django.middleware.csrf.CsrfViewMiddleware
但不是:django.middleware.csrf.CsrfResponseMiddleware
。
所以在django.middleware.csrf.CsrfResponseMiddleware
和django.middleware.csrf.CsrfViewMiddleware
之后添加django.middleware.common.CommonMiddleware
,你就可以了。