Flask进阶篇(一)表单渲染

10 篇文章 0 订阅
from flask import Flask, render_template, redirect, url_for, session
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, EqualTo


app = Flask(__name__)
# 混淆,CSRF需要密钥,session也需要
app.config["SECRET_KEY"] = "SDADASDadsdsdw1514"


# 定义表单模型类
class RegisterForm(FlaskForm):
    user_name = StringField(label=u"用户名", validators=[DataRequired(u"用户名不能为空")])
    password1 = PasswordField(label=u"密码", validators=[DataRequired(u"密码不能为空")])
    password2 = PasswordField(label=u"确认密码", validators=[DataRequired(u"确认密码不能为空"),EqualTo("password1", u"两次密码不一致")])
    submit = SubmitField(label=u"提交")


@app.route("/register", methods=["GET", "POST"])
def register():
    # 创建表单对象
    form = RegisterForm()
    # 验证:判断form中的数据是否合理,合理返回真,否则为假
    # 除了表单上面的所有条件外还要有csrf_token
    if form.validate_on_submit():
        uname = form.user_name.data
        pwd1 = form.password1.data
        pwd2 = form.password2.data
        session["uname"] = uname
        print(uname, pwd1, pwd2)
        return redirect(url_for("index"))
    # 渲染模板
    return render_template("register.html", form=form)


@app.route("/index")
def index():
    uname = session.get("uname")
    return "hello %s" % uname


if __name__ == '__main__':
    app.run(debug=True)

页面代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form method="post">
        {{form.csrf_token}}

        {{form.user_name.label}}
        <p>{{form.user_name}}</p>
        {%for msg in form.user_name.errors%}
        <p>{{msg}}</p>
        {%endfor%}

        {{form.password1.label}}
        <p>{{form.password1}}</p>
        {%for msg in form.password1.errors%}
        <p>{{msg}}</p>
        {%endfor%}

        {{form.password2.label}}
        <p>{{form.password2}}</p>
        {%for msg in form.password2.errors%}
        <p>{{msg}}</p>
        {%endfor%}

        {{form.submit}}
    </form>
</body>
</html>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值