我正在使用Django 1.11。我开发了一些html页面&有views.py 我有一个名为forgotpassword.html的页面,其中我使用了用户的EmailId。 我找到了各自的安全问题&想要显示给用户输入答案。我有另一个名为getpassword.html的页面。 这是代码: view.py
FlgStdTest
当用户输入他的电子邮件时点击提交我能够看到用户输入安全答案的输入区域,该答案来自getpassword.html。但网址仍然是forgetpassword.html
因此,当用户输入他的安全答案时,我收到的错误是useremail不能为空。这是因为网址问题。
你能建议解决方法吗?
答案 0 :(得分:0)
你必须进行重定向而不渲染模板。
def forgotpassword(request):
usercontemail = request.POST['useremail']
#Get the securityquestion from Database
## you can save the scurtiy question in session or you cn add the
## question id in the url
return HttpResponseRedirect("url of the security question page")
关于重定向,你给了检查方法
def getpassword(request):
if request.METHOD == "GET":
## get question from session or from url
return redirect(request,'home/getpassword.html',{'squestion':squestion})
else if request.METHOD == "POST":
##submit answer
#Display security question, get the answer from user & proceeed
另一种方法只是将表单中的操作定义为获取密码的URL
答案 1 :(得分:0)
我有一个类似的问题,我正在更新记录,我的渲染重定向呈现正确的页面但我的URL没有改变。我不知道的是,您不仅可以渲染重定向特定页面,还可以渲染重定向url.py文件中指定的URL。我发现通过指定url.py声明的url,它通过正常循环发送请求到url文件然后到指定的视图文件,传递任何声明的参数。
所以在你的代码中
return redirect(request, 'home/getpassword.html', {'squestion': squestion })
你可以尝试
#return redirect('app url.py:specified url of view', {*args}
return redirect('home:getpassword', {'squestion': squestion})
请确保您的url.py文件指定了您要传递的参数。
在stackoverflow上查看这篇文章: Django return redirect() with parameters
以及阅读渲染重定向()部分的django文档 https://docs.djangoproject.com/en/1.11/topics/http/shortcuts/
希望它有所帮助。