Django выводит токен CSRF как объект вместо значения

Я борюсь с токеном CSRF в простой форме POST в Django. Шаблон генерирует следующий вывод CSRF вместо вывода значения токена:

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

Я использую {% csrf_token %} в шаблоне, как это исправить? (Я использую Джанго 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>

person DrDee    schedule 23.02.2010    source источник
comment
Пожалуйста, покажите точный фрагмент шаблона.   -  person Daniel Roseman    schedule 23.02.2010
comment
Привет, Даниэль, я добавил форму, надеюсь, это поможет. Когда я делаю {{ crsf_token.csrf_token }}, отображается фактический токен, но без всего скрытого поля ввода.   -  person DrDee    schedule 23.02.2010


Ответы (1)


Я нашел причину: в settings.py я добавил: django.middleware.csrf.CsrfViewMiddleware, но не: django.middleware.csrf.CsrfResponseMiddleware.

Так что добавьте django.middleware.csrf.CsrfResponseMiddleware после django.middleware.csrf.CsrfViewMiddleware и django.middleware.common.CommonMiddleware, и все готово.

person DrDee    schedule 23.02.2010