Форум сайта python.su
Всем привет. В дебагсервере постоянно вылезает ошибка
CSRF token missing or incorrect.
Когда отправляю данные из формы
Собственно перечитал документацию. Что сделано, для устранения ошибки (все по мануалам)
в settings.py 'django.middleware.csrf.CsrfViewMiddleware' - есть
в views.py
from django.views.decorators.csrf import csrf_protect
#.....
@csrf_protect
def my_function_render_form(request):
#....
Офлайн
в форму надо вставить тег, например так:
<form action="" method="post">{% csrf_token %}
Офлайн
Ой, забыл! Упомянуть!
Тоже такое вставил! И не помогло :(
Офлайн
Add the middleware ‘django.middleware.csrf.CsrfViewMiddleware’. ……..
Alternatively, you can use the decorator django.views.decorators.csrf.csrf_protect on particular views you want to protect (see below).
Убери декоратор @csrf_protect. Может поможет.
Офлайн
Неа, не помогло.
Может что-то упускаю из виду.. У меня однажды такая ситуация была ) Но я как-то ее быстро решил… Сейчас уже 4 часа прошло, я все не разберусь…
Офлайн
Все! нашел в хелпе (блин, запихнули в самые дебри)
В settings.py неоходимо добавить
'django.middleware.csrf.CsrfResponseMiddleware',
В раздел MIDDLEWARE конечно =)
После этого вообще больше ничего не нужно - ни декоратора @csrf_protect, ни блока {% csrf_token %}
Офлайн
Ты же писал, что
“в settings.py ‘django.middleware.csrf.CsrfViewMiddleware’ - есть”… хех)
Ну, ок. Главное, что разобрался)
Офлайн
Use of the CsrfResponseMiddleware is not recommended because of the performance hit it imposes, and because of a potential security problem (see below). It can be used as an interim measure until applications have been updated to use the csrf_token tag. It is deprecated and will be removed in Django 1.4.
Офлайн
Да-да…
Но почему-то этот способ сработал, а предыдущий нет… Наверняка я виноват, но ошибку найти у себя не могу.
Офлайн
В settings.py ‘django.middleware.csrf.CsrfViewMiddleware’ надо закомментировать, а в шаблоне в форме поставить {% csrf_token %}.
Офлайн