【转】Form表单校验组件——Tyrion

参考博客

更多的字段使用及说明,见博客:

https://www.cnblogs.com/wupeiqi/p/5938916.html

我自己做的示例

目录结构

forms中存放校验的类,templates中是模板文件,app.py是tornado项目启动文件。

loginform.py

# -*- coding:utf-8 -*-
from Tyrion.Forms import Form
from Tyrion.Fields import StringField
from Tyrion.Fields import EmailField


class LoginForm(Form):
    username = StringField(error={"required":"用户名不能为空"})
    password = StringField(error={"required":"密码不能为空"})
    email = EmailField(error={"required":"邮箱不能为空","invalid":"邮箱格式错误"})

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
<form action="" method="post">

<!--    <div>-->
<!--        用户名:<input type="text" name="username">-->
<!--    </div>-->
<!--    <div>-->
<!--        密码:<input type="text" name="password">-->
<!--    </div>-->
<!--    <div>-->
<!--        邮箱:<input type="text" name="email">-->
<!--    </div>-->

    <div>
        <!-- Form标签的创建 -->
       用户名:{% raw form.username %}
         <!-- 错误信息 -->
        <span>{{ form.error_dict.get('username',"") }}</span>
    </div>
    <div>
        密码:{% raw form.password %}
        <span>{{ form.error_dict.get("password","") }}</span>
    </div>
    <div>
        邮箱:{% raw form.email %}
        <span>{{ form.error_dict.get("email",'') }}</span>
    </div>

    <input type="submit" value="提交">

</form>



</body>
</html>

app.py

# -*- coding:utf-8 -*-
import os

import tornado.web
import tornado.ioloop

from forms.loginform import LoginForm


class LoginHandler(tornado.web.RequestHandler):

    def get(self, *args, **kwargs):
        form = LoginForm(self)
        self.render("login.html",form=form)

    def post(self, *args, **kwargs):
        form = LoginForm(self)

        # 检查用户输入是否合法
        if form.is_valid():
            # 使用value_dict接收用户输入的合法数据
            print("合法,用户输入的合法内容为:", form.value_dict)
        else:
            # 若用户输入不合法,输入错误信息,在error_dict中
            print("不合法,用户输入的不合法内容:", form.error_dict)
        # 返回页面
        self.render("login.html",form=form)


if __name__ == '__main__':
    # 路由
    application = tornado.web.Application(
        [
            (r"/login", LoginHandler),
        ],
        template_path = os.path.join(os.path.dirname(__file__),"templates"),

        debug=True,
    )
    # 使用表单校验
    import Tyrion
    Tyrion.setup("tornado")

    print("starting...")
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

效果演示

 

posted on 2019-10-28 20:25  江湖乄夜雨  阅读(136)  评论(0编辑  收藏  举报