用Flask框架登陆

2024-04-20 06:01:34 发布

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

我跟随Flask教程,对这组登录函数代码有疑问(它有HTML部分和Python部分):

HTML部分:

<h1>Login</h1>
{% if error %}
    <p class=error><strong>Error:</strong> {{ error }}
{% endif %}
    <form action="" method=post>
        <dl>
            <dt>Username:
            <dd><input type=text name=username value="{{request.form['username']}}">
            <dt>Password:
            <dd><input type=password name=password>
        </dl>
        <p><input type=submit value=Login>
    </form>

Python部分:

^{pr2}$

这个代码正常工作。我必须在用户名框和password框中输入admin才能登录。我的问题是关于HTML部分的这四行:

<dt>Username:
<dd><input type=text name=username value="{{request.form['username']}}">
<dt>Password:
<dd><input type=password name=password>

为什么,当我只将这个value="{{request.form['username']}}"放入username时,登录过程仍然正常工作?不是必须这样才能正常工作吗?在

<dt>Username:
<dd><input type=text name=username value="{{request.form['username']}}">
<dt>Password:
<dd><input type=password name=password value="{{request.form['password']}}">

Tags: textnameforminputvaluerequesthtmltype
1条回答
网友
1楼 · 发布于 2024-04-20 06:01:34

不,我相信您对在用户名字段中设置value="{{request.form['username']}}"的目的感到困惑。在

让我们浏览一个登录示例:

  • 当您导航到/log时,关联的视图函数呈现log.html。此时没有设置request.form['username']的值,因此用户名字段以空字符串作为值呈现。默认情况下,密码也会获得一个空字符串。在
  • 输入用户名和密码并单击submit后,路由将作为POST请求再次调用,request.form['username']和{}都将被设置为用户输入的值。在
  • 现在有两种可能性:
    • 如果用户名和密码正确,则用户将登录并重定向到应用程序中的其他位置。表单中的username字段的值设置为request.form['username']这一事实完全没有造成任何影响,因为此时HTML表单不再使用。在
    • 如果用户名和/或密码不正确,将再次呈现登录表单供用户重试。将用户名字段的值设置为request.form['username']将导致记住用户名字段,用户第一次输入的值将在第二次显示。另一侧的密码将再次显示为空。在

在登录失败时记住用户名是一个方便的功能。如果有错误,您可以编辑它并进行更正。在

但是在密码字段上这样做是没有意义的,因为您看不到字符,所以不知道是否需要进行更正。对于密码,你必须从头开始重新输入。在

相关问题 更多 >