Django - 将 POST 数据从一个视图传递到另一个视图以及表单验证错误。
Django - Passing POST data from view to view and bugs with form validation.
我正在更改帐户的密码。我从第一个视图获取用户名和密码并将其传递给第二个视图,它工作正常但是当涉及到第二个视图表单验证时。它错误地重定向到第一个视图的表单。那是我的问题。
我的目标是,如果第二次身份验证失败,则丢弃数据(用户名和密码),不要更改密码。还有一件事我不希望用户通过获取请求访问第二个视图。
def first_view(request):
if request.method == 'POST':
form=firstForm(request.POST) # for getting username password
if form.is_valid():
return second_view(request) # Don't want HttpResponse here. To send POST request.
#Sending username and password data in POST request.
else:
form=firstForm()
return render(request,'template1.html',{'form':form})
这是通过在 phone
上发送文本代码进行的第二次身份验证
def second_view(request):
if request.method === 'POST':
form=secondForm(request.POST) # Single field - Code recieved on phone
username=request.POST['username']
password=request.POST['password']
code=GetRandomNumber() # Creates a random number to send on phone.
SendText(code,numer) # Sends code on number
if form.is_valid(): # HERE IT REDIRECTS TO THE FIRST VIEW FORM WITH ERROR
if code==request.POST['code']:
HttpResponse('Succeess')
else:
HttpResponse('Not allowed')
在这种情况下,我建议您使用 django 会话。例如:
第一次观看
- 当POST
时,在first_view的FirstForm中检查username/password
- 如果凭据正常 -- 在会话中保存一些状态
- 向用户发送验证码
- 重定向到 second_view
第二视图
- 检查会话中先前保存的状态
- 当POST
时在second_view中检查SecondForm中的代码
- 如果代码没问题 -- 成功!
像这样。
我正在更改帐户的密码。我从第一个视图获取用户名和密码并将其传递给第二个视图,它工作正常但是当涉及到第二个视图表单验证时。它错误地重定向到第一个视图的表单。那是我的问题。
我的目标是,如果第二次身份验证失败,则丢弃数据(用户名和密码),不要更改密码。还有一件事我不希望用户通过获取请求访问第二个视图。
def first_view(request):
if request.method == 'POST':
form=firstForm(request.POST) # for getting username password
if form.is_valid():
return second_view(request) # Don't want HttpResponse here. To send POST request.
#Sending username and password data in POST request.
else:
form=firstForm()
return render(request,'template1.html',{'form':form})
这是通过在 phone
上发送文本代码进行的第二次身份验证def second_view(request):
if request.method === 'POST':
form=secondForm(request.POST) # Single field - Code recieved on phone
username=request.POST['username']
password=request.POST['password']
code=GetRandomNumber() # Creates a random number to send on phone.
SendText(code,numer) # Sends code on number
if form.is_valid(): # HERE IT REDIRECTS TO THE FIRST VIEW FORM WITH ERROR
if code==request.POST['code']:
HttpResponse('Succeess')
else:
HttpResponse('Not allowed')
在这种情况下,我建议您使用 django 会话。例如:
第一次观看
- 当POST 时,在first_view的FirstForm中检查username/password
- 如果凭据正常 -- 在会话中保存一些状态
- 向用户发送验证码
- 重定向到 second_view
第二视图
- 检查会话中先前保存的状态
- 当POST 时在second_view中检查SecondForm中的代码
- 如果代码没问题 -- 成功!
像这样。