当点击重置密码链接时,如何从登录表单中获取用户名

2024-04-26 18:16:50 发布

您现在位置:Python中文网/ 问答频道 /正文

当按下重置密码链接时,我正在尝试从我的登录表单中获取用户名。你知道吗

你知道吗视图.py你知道吗

def重置密码(请求):

if request.method == 'POST':
    username = request.Post.get['login_username']
    if username:
        #send password reset link via email 
    else:
        #if username is empty search for your account 
        return render(request, 'accounts/forms/email_search.html',{})

你知道吗表单.html你知道吗

 <form class="navbar-form navbar" method="POST"action="{% url 'login' %}">
        {% csrf_token %}

        <div class="form-group">
           {{ form.login_username }}
        </div>
        <div class="form-group">
           {{ form.login_password }}
        </div>
        <button type="submit" id="loginBtn" class="btn btn-default">Submit</button>
        <br>
       <a href="{% url 'ResetPassword' %}">Reset Password</a>
      </form>

Tags: divform密码表单searchifemailrequest
1条回答
网友
1楼 · 发布于 2024-04-26 18:16:50

首先,请求对象没有属性Post,而是^{}。你知道吗

所以,应该是

# use this if you're sure that login_username will always be passed 
`username = request.POST['login_username']`

或者

# use this and in case login_username fails, then an empty string is returned
`username = request.POST.get('login_username', '')`.

现在,来谈谈你的问题。表单只有login视图的提交输入。change password按钮只是一个普通的链接。因此,当您单击它时,您会向ResetPassword视图发出一个GET请求(顺便说一下,您应该将它重命名为reset_password,这是Python方式),而不传递任何参数。你知道吗

若要解决此问题,必须从窗体内部删除此链接。 然后您必须为ResetPassword视图创建模板,比如说reset_password.html,并在其中创建另一个表单(只需要username字段),它将POST转换为ResetPassword视图。你知道吗

例如:

<!  reset_password.html  >

<form class="navbar-form navbar" method="POST" action="{% url 'ResetPassword' %}">{% csrf_token %}
    <div class="form-group">
        <input type="text" name="login_username" required />
    </div>
    <button type="submit" id="reset-pwd-btn" class="btn btn-default">Reset Password</button>
</form>

最后:

# ResetPassword.py    

def ResetPassword(request):
    if request.method == 'POST':
        # login_username is the same as the input's name
        username = request.POST.get('login_username')
        if username:
            # send password reset link via email
        else:
            # if username is empty search for your account
        return render(request, 'accounts/forms/email_search.html', {})
    return render(request, 'accounts/forms/reset_password.html', {})

相关问题 更多 >