Flask框架运用WTForms实现用户注册的示例详解:全球微头条
(资料图片仅供参考)
WTForms 是用于web开发的灵活的表单验证和呈现库,它可以与您选择的任何web框架和模板引擎一起工作,并支持数据验证、CSRF保护、国际化等,运用WTForms框架并配合Flask可实现一个带有基本表单验证功能的用户注册与登录页面,经过美化的页面可以直接应用到项目中。
WTForms 需要额外安装PIP包pip install WTForms email_validator实现用户注册页面
在templates目录下新建index.html
Title
Flask 后端部分使用如下代码:
from flask import Flask, render_template, request, redirect
from wtforms import Form,validators,widgets
from wtforms.fields import simple
app = Flask(import_name=__name__,
static_url_path="/python", # 配置静态文件的访问url前缀
static_folder="static", # 配置静态文件的文件夹
template_folder="templates") # 配置模板文件的文件夹
class RegisterForm(Form):
username = simple.StringField(
#label="注册用户:",
validators=[
validators.DataRequired(message="用户名不能为空"),
validators.Length(min=6, max=18, message="用户名长度必须大于%(min)d且小于%(max)d")
],
widget=widgets.TextInput(),
render_kw={"class": "form-control",
"placeholder":"输入注册用户名"}
)
email = simple.StringField(
#label="用户邮箱:",
validators=[validators.DataRequired(message="邮箱不能为空"),validators.Email(message="邮箱格式输入有误")],
render_kw={"class":"form-control",
"placeholder":"输入Email邮箱"}
)
password = simple.PasswordField(
#label="用户密码:",
validators=[
validators.DataRequired(message="密码不能为空"),
validators.Length(min=5, message="用户名长度必须大于%(min)d"),
validators.Regexp(regex="[0-9a-zA-Z]{5,}",message="密码不允许使用特殊字符")
],
widget=widgets.PasswordInput(),
render_kw={"class": "form-control",
"placeholder":"输入用户密码"}
)
RepeatPassword = simple.PasswordField(
#label="重复密码:",
validators=[
validators.DataRequired(message="密码不能为空"),
validators.Length(min=5, message="密码长度必须大于%(min)d"),
validators.Regexp(regex="[0-9a-zA-Z]{5,}",message="密码不允许使用特殊字符"),
validators.EqualTo("password",message="两次密码输入必须一致,龟孙")
],
widget=widgets.PasswordInput(),
render_kw={"class": "form-control",
"placeholder":"再次输入密码"}
)
submit = simple.SubmitField(
label="用 户 注 册",
render_kw={ "class":"btn btn-success" }
)
@app.route("/register", methods=["GET", "POST"])
def Register():
if request.method == "GET":
RetForm = RegisterForm()
return render_template("index.html", form=RetForm)
else:
RetForm = RegisterForm(formdata=request.form)
if RetForm.validate():
print("接收到数据:", RetForm.data)
return """<script>alert("您的注册请求已提交!");</script>"""
else:
print(RetForm.errors)
return render_template("index.html", form=RetForm)
if __name__ == "__main__":
app.run(host="127.0.0.1", port=80, debug=False)
代码运行效果如下:
实现用户登录页面
在templates目录下新建index.html
Title
Flask 后端部分使用如下代码:
from flask import Flask, render_template, request, redirect
from wtforms import Form,validators,widgets
from wtforms.fields import simple,html5
app = Flask(import_name=__name__,
static_url_path="/python", # 配置静态文件的访问url前缀
static_folder="static", # 配置静态文件的文件夹
template_folder="templates") # 配置模板文件的文件夹
class LoginForm(Form):
username = simple.StringField(
validators=[
validators.DataRequired(message=""),
validators.Length(min=4, max=15, message=""),
validators.Regexp(regex="[0-9a-zA-Z]{4,15}", message="")
],
widget=widgets.TextInput(),
render_kw={"class":"form-control",
"placeholder":"请输入用户名或电子邮件"}
)
password = simple.PasswordField(
validators=[
validators.DataRequired(message=""),
validators.Length(min=5, max=15,message=""),
validators.Regexp(regex="[0-9a-zA-Z]{5,15}",message="")
],
widget=widgets.PasswordInput(),
render_kw={"class":"form-control",
"placeholder":"请输入密码"}
)
@app.route("/login",methods=["GET","POST"])
def Login():
if request.method == "GET":
RetForm = LoginForm()
return render_template("index.html", form=RetForm)
else:
RetForm = LoginForm(formdata=request.form)
if RetForm.validate():
temp = RetForm.data
print("接收到数据:",temp)
return """<script type="text/javascript">alert("登录完成!");</script>"""
return render_template("index.html", form=RetForm)
if __name__ == "__main__":
app.run(host="127.0.0.1", port=80, debug=False)
代码运行效果如下:
到此这篇关于Flask框架运用WTForms实现用户注册的示例详解的文章就介绍到这了,更多相关Flask WTForms用户注册内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?

