я получаю сообщение об ошибке при использовании POST в моей форме, хотя я добавил csrf_token к моей форме ....Джанго POST запрос неудача
Ошибка
Forbidden (403)
CSRF проверка не выполнена. Запрос прерван.
Помощь
Причина дается для отказа: CSRF печенья не установлено.
В общем, это может произойти, если существует подлинная подделка запроса на кросс-сайт или когда механизм CSRF Django используется неправильно. Для форм POST вам необходимо: • Ваш браузер поддерживает cookies. • Функция просмотра использует RequestContext для шаблона вместо Context. • В шаблоне внутри каждой формы POST есть тег шаблона {% csrf_token%}, который предназначен для внутреннего URL-адреса. • Если вы не используете CsrfViewMiddleware, вы должны использовать csrf_protect для любых представлений, использующих тег шаблона csrf_token, а также те, которые принимают данные POST.
Вы видите раздел справки этой страницы, потому что у вас DEBUG = True в файле настроек Django. Измените это на False, и отобразится только начальное сообщение об ошибке.
Вы можете настроить эту страницу, используя настройку CSRF_FAILURE_VIEW.
views.py
def search_form(request):
return render_to_response('search_form.html')
def search(request):
print 'request.post=', request.POST
print 'request.get=', request.GET
print 'request.method=', request.META.get('REQUEST_METHOD')
if 'q' in request.GET:
message = 'You searched for :%r' % request.GET['q']
else:
message = 'You submitted an empty form'
return HttpResponse(message)
search-form.html
<html>
<head>
<title>Search</title>
</head>
<body>
<form action="/polls/search/" method="post">{% csrf_token %}
<input type="text" name="q">
<input type="submit" value="Search">
</form>
</body>
</html>
urls.py
urlpatterns = patterns('',url(r'^$',views.index,name='index'),
url(r'^meta/',views.display_meta,name='meta'),
url(r'^search-form/$',views.search_form),
url(r'^search/',views.search),