Форум сайта python.su
Тема избита но в документации не могу разобраться
мидлваре ‘django.middleware.csrf.CsrfViewMiddleware’ в сетинги добавил. GET работал, а вот POST чтото никак
выдайт вот такое
Forbidden (403)
CSRF verification failed. Request aborted.
Help
Reason given for failure:
No CSRF or session cookie.
In general, this can occur when there is a genuine Cross Site Request Forgery, or when Django's CSRF mechanism has not been used correctly. For POST forms, you need to ensure:
* The view function uses RequestContext for the template, instead of Context.
* In the template, there is a {% csrf_token %} template tag inside each POST form that targets an internal URL.
* If you are not using CsrfViewMiddleware, then you must use csrf_protect on any views that use the csrf_token template tag, as well as those that accept the POST data.
You're seeing the help section of this page because you have DEBUG = True in your Django settings file. Change that to False, and only the initial error message will be displayed.
You can customize this page using the CSRF_FAILURE_VIEW setting.
def contact(request):
if request.method == 'POST':
form=ContactForm(request.POST)
if form.is_valid():
cd=form.cleaned_data
send_mail(
cd['subject'],
cd['message'],
cd.get('email','noreply@yande.com'),
['dieego6@gmail.com'],
)
return HttpResponseRedirect('/contact/thanks/')
else:
form=ContactForm()
return render_to_response('contact_form.html',{'form':form})
<html>
<head>
<title>
Свяжитесь с нами
</title>
</head>
<body>
<h1>
Свяжитесь с нами
</h1>
{%if form.errors %}
<p style="color: red;">
Исправьте следующие ошибки{{form.errors|pluralize}}
</p>
{%endif%}
<form action="" method="post">{% csrf_token %}
<table>
{{form.as_table}}
</table>
<input type="submit" value="Отправить">
</form>
</body>
</html>
Офлайн
Сессии включены?
Офлайн
Александр Кошелевесли вы имеете ввиду мидлваре ‘django.contrib.sessions.middleware.SessionMiddleware’ то да, была добавлена
Сессии включены?
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.redirects.middleware.RedirectFallbackMiddleware',
)
Отредактировано (Дек. 21, 2010 14:58:31)
Офлайн
diegoпопробуй закоментироватьАлександр Кошелевесли вы имеете ввиду мидлваре ‘django.contrib.sessions.middleware.SessionMiddleware’ то да, была добавлена
Сессии включены?
upd:MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.redirects.middleware.RedirectFallbackMiddleware',
)
'django.middleware.csrf.CsrfViewMiddleware',
Офлайн
anbu
Вы бы начало топика прочитали, что ли.
diego
Или добавить ‘django.middleware.csrf.CsrfResponseMiddleware’ в настройки, или можно добавить токен в пост запрос:
<form action="..." method="POST">{% csrf_token %}
...
</form>
Отредактировано (Дек. 22, 2010 11:31:49)
Офлайн
FerromanНазвание топика: CSRF verification failed. Request aborted.
anbu
Вы бы начало топика прочитали, что ли.
#'django.middleware.csrf.CsrfViewMiddleware',
<form action="" method="post">{% csrf_token %}
Отредактировано (Дек. 22, 2010 13:14:02)
Офлайн
anbu
Чуть дальше названия прочитайте. Человек сознательно пытается добавить CSRF, и у него с этим проблемы, а Вы ему предлагаете её отключить.
Офлайн
все, понял.. немного не внимательно прочитал пост, извиняюсь :)
в глаза сразу бросились ошибка и код
Офлайн
anbu и Ferroman спасибо
Ferroman1. Добавление одного токена {% csrf_token %} я так понял не решает проблему, следить за подменой нужно всё равно?
anbu
Вы бы начало топика прочитали, что ли.
diego
Или добавить ‘django.middleware.csrf.CsrfResponseMiddleware’ в настройки, или можно добавить токен в пост запрос:<form action="..." method="POST">{% csrf_token %}
...
</form>
Офлайн