Форум сайта python.su
проблема такова:
Есть форма(заполняет пользователь) которую получаю, обрабатываю, перевожу на другую страницу.
В форме есть 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 %}
{% 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('/')
Отредактировано Xa_xoo (Сен. 25, 2015 10:48:37)
Офлайн
Xa_xooзачем?
при обработки запроса делаю апдейт csrf и возвращаю его в аргументах
Офлайн
FishHookтаким образом я авторитизацию во вьюхе описывал (я про csrf)
Офлайн
Ошибка у вас возникает потому что вы не передаёте в шаблон контекст реквеста. То есть токена там тупо нет, а идиотски тупой джанговский шаблонизатор никак на эту ошибку не реагирует.
Офлайн
мне казалось вот таким образом:
args = {} args.update(csrf(request))
return render_to_response('code_prog_res.html', args)
Офлайн
Наверно и так можно, а ваш код без отступов не читал
Офлайн
в 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”
перевод я знаю, но не пойму где я ошибся..
Офлайн
подключил RequestContext и переделал на
[code python]return render_to_response('my_template.html',
my_context,
context_instance=RequestContext(request))[/code]
Офлайн
ни у кого еще мыслей нет?
Офлайн