在 POST 后重定向并传递数据时重定向 URL 的持久性
Persistence of Redirect URL when redirecting after a POST and passing data
成功提交表单后,我重定向到 "success" 页面,该页面显示 'thank you' 消息以及有关提交的一些信息。为此,我将 POST 数据放入会话中,重定向到适当的 URL,然后使用会话数据呈现模板。
但是,这意味着如果有人手动导航到 'success' URL,他们将看到来自上一个表单提交的 "success" 消息。我该如何防止呢?表单在 /register/
处处理。成功的提交将重定向到 /register/success
。我希望在浏览器中实际键入 /register/success/
的人(没有提交表单)看到错误页面或其他内容。如何处理?
urls.py
url(r'^register/$', views.register, name='register'),
url(r'^register/success/$', views.registration_success, name='registration_success'),
views.py
def register(request):
if request.method == 'POST':
if the_form.is_valid():
my_id = the_form.cleaned_data['myid']
email_addr = the_form.cleanedJ_data['emailaddr']
request.session['registration'] = {'my_id': my_id, 'email_addr': email_addr }
return HttpResponseRedirect(reverse('polls:registration_success'))
def registration_success(request):
template = loader.get_template('polls/submitted.html')
context = RequestContext(request, request.session.get('registration'))
return HttpResponse(template.render(context))
你可以使用Django session来实现that.Here是用你的代码的例子
def register(request):
if request.method == 'POST':
if the_form.is_valid():
my_id = the_form.cleaned_data['myid']
email_addr = the_form.cleanedJ_data['emailaddr']
request.session['registration'] = {'my_id': my_id, 'email_addr': email_addr }
request.session['form-submitted'] = True
return HttpResponseRedirect(reverse('polls:registration_success'))
def registration_success(request):
if not request.session.get('form-submitted', False):
# handle the case where there is no form submitted
return HttpResponseRedirect(reverse('polls:register'))
template = loader.get_template('polls/submitted.html')
context = RequestContext(request, request.session.get('registration'))
return HttpResponse(template.render(context))
成功提交表单后,我重定向到 "success" 页面,该页面显示 'thank you' 消息以及有关提交的一些信息。为此,我将 POST 数据放入会话中,重定向到适当的 URL,然后使用会话数据呈现模板。
但是,这意味着如果有人手动导航到 'success' URL,他们将看到来自上一个表单提交的 "success" 消息。我该如何防止呢?表单在 /register/
处处理。成功的提交将重定向到 /register/success
。我希望在浏览器中实际键入 /register/success/
的人(没有提交表单)看到错误页面或其他内容。如何处理?
urls.py
url(r'^register/$', views.register, name='register'),
url(r'^register/success/$', views.registration_success, name='registration_success'),
views.py
def register(request):
if request.method == 'POST':
if the_form.is_valid():
my_id = the_form.cleaned_data['myid']
email_addr = the_form.cleanedJ_data['emailaddr']
request.session['registration'] = {'my_id': my_id, 'email_addr': email_addr }
return HttpResponseRedirect(reverse('polls:registration_success'))
def registration_success(request):
template = loader.get_template('polls/submitted.html')
context = RequestContext(request, request.session.get('registration'))
return HttpResponse(template.render(context))
你可以使用Django session来实现that.Here是用你的代码的例子
def register(request):
if request.method == 'POST':
if the_form.is_valid():
my_id = the_form.cleaned_data['myid']
email_addr = the_form.cleanedJ_data['emailaddr']
request.session['registration'] = {'my_id': my_id, 'email_addr': email_addr }
request.session['form-submitted'] = True
return HttpResponseRedirect(reverse('polls:registration_success'))
def registration_success(request):
if not request.session.get('form-submitted', False):
# handle the case where there is no form submitted
return HttpResponseRedirect(reverse('polls:register'))
template = loader.get_template('polls/submitted.html')
context = RequestContext(request, request.session.get('registration'))
return HttpResponse(template.render(context))