【问题标题】:Not show form data in url django不在 url django 中显示表单数据
【发布时间】:2016-06-30 18:06:37
【问题描述】:

在用户通过身份验证后,我正在创建一个密码重置表单,他们会看到重置页面,他们可以在其中输入用户名和新密码。但是,一旦他们设置了这些新数据并单击提交按钮,数据就会显示在显示的下一页的 url 中。我需要如何将我的应用程序配置为不这样做?

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

【问题讨论】:

    标签: python django passwords


    【解决方案1】:

    这就是 GET 操作的工作原理。无论如何,您应该为此使用 POST。

    【讨论】:

      猜你喜欢
      • 2015-11-21
      • 2018-05-18
      • 2017-11-18
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多