2016-06-30 8 views
0

ユーザーが認証された後にパスワードリセットフォームを作成していますが、ユーザー名とパスワードを入力できるリセットページが表示されます。ただし、この新しいデータを設定して[送信]ボタンをクリックすると、次のページのURLにデータが表示されます。これを行わないようにアプリケーションを設定するにはどうすればよいですか? GETアクションがどのように動作するかだURLのdjangoにフォームデータが表示されない

views.py

def index(request): 
if request.method == 'POST': 
    form = login(request.POST) 
    if form.is_valid(): 
     user = form.cleaned_data['username'] 
     passw = form.cleaned_data['password'] 
     if user and passw: 
      #try the post to login 
      r=validateUser(user,passw) 
      if r: 
       formReset = reset() 
       return render(request, 'loggedin.html',{'form' : formReset}) 
      else: 
       return render(request, 'index.html',{'form' : form}) 
else: 
    form = login() 
    loggedin(request) 
    return render(request, 'index.html', {'form' : form}) 

def loggedin(request): 
if request.method == 'GET': 
    form = reset(request.GET) 
    if form.is_valid(): 
     user = form.cleaned_data['username'] 
     newpassword = form.cleaned_data['newpassword'] 
     confirmnewpassword = form.cleaned_data['confirmnewpassword'] 
     if newpassword == confirmnewpassword: 
      #passwords match 
      val = resetpassword(user,newpassword) 
     else: 
      return render(request, 'loggedin.html', {"message" : 'Passwords do not match', 'form' : form}) 
else: 
    return render(request, 'loggedin.html',{'form' : form}) 

forms.py

from django import forms 

class login(forms.Form): 
#class used for the login prompt 
username = forms.CharField(widget=forms.TextInput(attrs={'class' : 'btn btn-lg btn-default'}),label='') 
password = forms.CharField(widget=forms.PasswordInput(attrs={'class' : 'btn btn-lg btn-default'}),label='') 


class reset(forms.Form): 
#class used for inputs to reset password 
username = forms.CharField(widget=forms.TextInput(attrs={'class' : 'btn btn-default'}),label='User Name') 
newpassword = forms.CharField(widget=forms.PasswordInput(attrs={'class' : 'btn btn-default'}),label='New Password') 
confirmnewpassword = forms.CharField(widget=forms.PasswordInput(attrs={'class' : 'btn btn-default'}),label='Confirm Password') 

loggedin.html

{% extends "base.html" %} 
{% load staticfiles %} 

{% block content %} 
<form action="/" method="GET"> 
{% csrf_token %} 
<div class="container"> 
    <h1>You are logged in</h1> 
    {{ message }} </br> 
    {{ form.as_p }} 
    <input type="submit" class="btn btn-lg btn-default" action="submit" value="Reset"> 
</div></form>{% endblock %} 

答えて

1

。とにかくこのためにPOSTを使用しているはずです。

関連する問題