#django #django-views
#джанго #django-просмотры #django
Вопрос:
Я читаю djangobook и получаю вопросы о HttpResponseRedirect
и render_to_response
.
предположим, у меня есть контактная форма, в которой публикуются данные для подтверждения просмотра. Он проходит через все процедуры проверки и базы данных. Затем, как обычно, я вывожу html с помощью
return render_to_response('thank_you.html',
dict(user_code = user_code),
context_instance=RequestContext(request))
Однако в книге предлагалось «Вы всегда должны выполнять перенаправление для успешных POST
запросов». потому что, если пользователь «Обновится» на этой странице, запрос будет повторен. Интересно, каков наилучший способ отправить user_code через HttpResponseRedirect
в thank_you.html
.
Ответ №1:
Передайте информацию в строке запроса:
thank_you/?user_code=1234
Или используйте переменную сеанса.
Проблема со строкой запроса заключается в том, что пользователь может видеть данные.
Ответ №2:
Когда вы отправляете перенаправление, вы отправляете пользователю ответ (HTTP-ответ 302), и затем они делают совершенно новый запрос на указанный URL. Это совершенно новый цикл запроса / ответа, поэтому нет способа предоставить данные, если вы не сохраните их в переменной сеанса, кэше, cookie и т.д.
Что вы можете сделать вместо того, чтобы указывать пользователю перенаправлять, это вызвать представление, которое вы хотите показать им самостоятельно, из того же запроса (т. Е. в тот момент, когда вы бы отправили перенаправление), а затем вы могли бы передать все, что вам нравится.