函数调用后表单验证不清除
form validation does not clear after function call
我正在编写一段代码来检查有效的用户凭据,就像在我的应用程序中一样:
@app.route('/register', methods=('GET', 'POST'))
def register():
if request.method == 'POST':
username = request.form['username']
email = request.form['email']
password = request.form['password']
db = get_db()
error = None
if not username:
error = 'Username is required'
if validate_user(username) is False:
error = 'Usernames must be 5 to 10 in length, not start with a number and use only lowercase.'
elif not email:
error = 'Email is required'
elif not password:
error = 'Password is required'
在用户的验证函数中,代码如下:
def validate_user(user):
valid_user = re.compile(r'\D{1}[D\d]{4,9}')
matched = valid_user.match(user)
if matched:
return True
else:
return False
在我使用 jinja 的表单中,我有以下代码,特定于 user 部分:
{% block content %}
<form method="post">
<div>
<label for="username">Username</label>
<input type="text" name="username" id="username" size="45"
title="cannot start with a number, have a length of 5 to 10 non-special characters" required>
</div>
当我测试这个功能时,即使一切看起来都已到位,页面也没有通过注册。真的在这上面旋转我的轮子,因为它看起来很微不足道......
此模式 \D[D\d]{4,9}
匹配除数字以外的任何字符,然后匹配 D
字符或数字 4-9 次。没有$
也是未锚定的,最大长度有re.match return一个匹配对象不是10
如果您需要用户名:
Usernames must be 5 to 10 in length, not start with a number and use
only lowercase.
\D[^A-Z]{4,9}$
注意 \D
和 [^A-Z]
也可以匹配空格和换行符。
如果不允许,您可以使用否定字符 class 从范围中排除 \s
。当您在代码中使用 re.match 时,您可以省略 ^
锚点。
[^\s\d][^\sA-Z]{4,9}$
我正在编写一段代码来检查有效的用户凭据,就像在我的应用程序中一样:
@app.route('/register', methods=('GET', 'POST'))
def register():
if request.method == 'POST':
username = request.form['username']
email = request.form['email']
password = request.form['password']
db = get_db()
error = None
if not username:
error = 'Username is required'
if validate_user(username) is False:
error = 'Usernames must be 5 to 10 in length, not start with a number and use only lowercase.'
elif not email:
error = 'Email is required'
elif not password:
error = 'Password is required'
在用户的验证函数中,代码如下:
def validate_user(user):
valid_user = re.compile(r'\D{1}[D\d]{4,9}')
matched = valid_user.match(user)
if matched:
return True
else:
return False
在我使用 jinja 的表单中,我有以下代码,特定于 user 部分:
{% block content %}
<form method="post">
<div>
<label for="username">Username</label>
<input type="text" name="username" id="username" size="45"
title="cannot start with a number, have a length of 5 to 10 non-special characters" required>
</div>
当我测试这个功能时,即使一切看起来都已到位,页面也没有通过注册。真的在这上面旋转我的轮子,因为它看起来很微不足道......
此模式 \D[D\d]{4,9}
匹配除数字以外的任何字符,然后匹配 D
字符或数字 4-9 次。没有$
也是未锚定的,最大长度有re.match return一个匹配对象不是10
如果您需要用户名:
Usernames must be 5 to 10 in length, not start with a number and use only lowercase.
\D[^A-Z]{4,9}$
注意 \D
和 [^A-Z]
也可以匹配空格和换行符。
如果不允许,您可以使用否定字符 class 从范围中排除 \s
。当您在代码中使用 re.match 时,您可以省略 ^
锚点。
[^\s\d][^\sA-Z]{4,9}$