Найти - Пользователи
Полная версия: csrf не найден или не совпадает
Начало » Django » csrf не найден или не совпадает
1
Xa_xoo
проблема такова:
Есть форма(заполняет пользователь) которую получаю, обрабатываю, перевожу на другую страницу.
В форме есть csrf token, при обработки запроса делаю апдейт csrf и возвращаю его в аргументах.
Но выдает ошибку 403 ошибка проверки csrf. В сеттингс все включено. Пишарм/Питон 3.4/Джанго1.8
html формы
{% extends 'base.html' %}
{% load staticfiles %}
{% block code %}
<form action="/do/" method="POST">{% csrf_token %}
<textarea name="ur" cols="60" rows="30"></textarea><br>
<input type="submit" value="code">
</form>
{% endblock %}
html куда возвращаю {% csrf_token %} прихал уже везде (написал пока что без токена)
{% extends 'base.html' %}
{% load staticfiles %}
{% block code_res %}
<form>
    <textarea>{{ new }}</textarea>
</form>
<form>
    <textarea>{{ so }}</textarea>
</form>
{% endblock %}

вот вьюха
def do_code(request):
d = {}
args = {}
args.update(csrf(request))
if request.method == 'POST':
if 'ur' in request.POST:
args['new'] = request.POST['ur']
sres = [d.get(l) for l in args['new']]
args['so'] = ''.join(sres)
return render_to_response('code_prog_res.html', args)
else:
reutrn redirect('/')
код рабочий, но с протектом csrf летит от нее ошибка. Где я не прав?
FishHook
Xa_xoo
при обработки запроса делаю апдейт csrf и возвращаю его в аргументах
зачем?
Xa_xoo
FishHook
таким образом я авторитизацию во вьюхе описывал (я про csrf)
думал идентично и здесь csrf будет работать…
Попробовал убрать апдейт, но всеравно та же ошибка … может в синтаксисе ошибся..
если можно, как правильно в моем коде нужно написать?
FishHook
Ошибка у вас возникает потому что вы не передаёте в шаблон контекст реквеста. То есть токена там тупо нет, а идиотски тупой джанговский шаблонизатор никак на эту ошибку не реагирует.

Xa_xoo
мне казалось вот таким образом:
args = {}
args.update(csrf(request))
и
return render_to_response('code_prog_res.html', args)
я как раз и передаю токен?
как мне написать верно то?
FishHook
Наверно и так можно, а ваш код без отступов не читал
Xa_xoo
в cmd пишет:
UserWarning: A {% csrf_token %} was used in a template, but the context did not provide the value. This is usually caused by not using RequestContext.
“A csrf_token was used in a template, but the context”

перевод я знаю, но не пойму где я ошибся..
Xa_xoo
подключил RequestContext и переделал на
[code python]return render_to_response('my_template.html',
my_context,
context_instance=RequestContext(request))[/code]

В cmd перестал ругаться, но в браузере всеравно возвращает ошибку ругаясь на проверку CSRF (запрос отклонен)
Xa_xoo
ни у кого еще мыслей нет?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB