Django - 通过表单验证将POST数据从视图传递到视图和错误。

时间:2015-12-07 21:11:23

标签: django validation post django-forms django-views

我正在更改帐户的密码。我从第一个视图获取用户名和密码并在第二个视图上传递它工作正常但是在第二个视图表单验证时。它会将错误重定向到第一个视图的表单。那是我的问题。

我的目标是如果第二次验证失败则丢弃数据(用户名和密码),不要更改密码。还有一件事我不希望用户通过get请求访问第二个视图。

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})

这是通过手机发送文本代码进行第二次身份验证

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')  

2 个答案:

答案 0 :(得分:0)

如果我理解你很好,你想首先接受用户的用户名和密码,然后将用户重定向到另一个表格,在那里他将输入他在电话上收到的代码,然后再继续更改密码是对的吗?第二个视图的表单包含哪个字段?

答案 1 :(得分:0)

我建议你在这种情况下使用django会话。例如:

第一次观看

  1. POST时在first_view中检查FirstForm中的用户名/密码
  2. IF凭据正常 - 在会话中保存一些状态
  3. 将代码发送给用户
  4. 重定向到second_view
  5. 提示视图

    1. 检查会话中以前保存的状态
    2. 在POST
    3. 时在second_view中检查SecondForm中的代码
    4. 如果代码没问题 - 成功!
    5. 像这样。