我跟随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']}}">
不,我相信您对在用户名字段中设置
value="{{request.form['username']}}"
的目的感到困惑。在让我们浏览一个登录示例:
/log
时,关联的视图函数呈现log.html
。此时没有设置request.form['username']
的值,因此用户名字段以空字符串作为值呈现。默认情况下,密码也会获得一个空字符串。在POST
请求再次调用,request.form['username']
和{request.form['username']
这一事实完全没有造成任何影响,因为此时HTML表单不再使用。在request.form['username']
将导致记住用户名字段,用户第一次输入的值将在第二次显示。另一侧的密码将再次显示为空。在在登录失败时记住用户名是一个方便的功能。如果有错误,您可以编辑它并进行更正。在
但是在密码字段上这样做是没有意义的,因为您看不到字符,所以不知道是否需要进行更正。对于密码,你必须从头开始重新输入。在
相关问题 更多 >
编程相关推荐