博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tornado Web 开发 框架搭建 (3)
阅读量:5904 次
发布时间:2019-06-19

本文共 2053 字,大约阅读时间需要 6 分钟。

hot3.png

Form验证

在使用wtforms 的时候,依然需要继承 wtform 针对tornado重写一下里面的一些方法

参考

from wtforms.ext.i18n.form import Form as wtFormclass Form(wtForm):    """    Using this Form instead of wtforms.Form    Example::        class SigninForm(Form):            email = EmailField('email')            password = PasswordField('password')        class SigninHandler(RequestHandler):            def get(self):                form = SigninForm(self.request.arguments)    """    LANGUAGES = ['zh']    def __init__(self, formdata=None, obj=None, prefix='', **kwargs):        super(Form, self).__init__(formdata, obj, prefix, **kwargs)    def process(self, formdata=None, obj=None, **kwargs):        if formdata is not None and not hasattr(formdata, 'getlist'):            formdata = TornadoArgumentsWrapper(formdata)        super(Form, self).process(formdata, obj, **kwargs)class TornadoArgumentsWrapper(dict):    def __getattr__(self, key):        try:            return self[key]        except KeyError:            #raise AttributeError            return None    def __setattr__(self, key, value):        self[key] = value    def __delattr__(self, key):        try:            del self[key]        except KeyError:            raise AttributeError    def getlist(self, key):        try:            values = []            for v in self[key]:                v = to_unicode(v)                #if isinstance(v, unicode):                v = re.sub(r"[\x00-\x08\x0e-\x1f]", " ", v)                values.append(v)            return values        except KeyError:            #raise AttributeError            return []

这里的基类用的是i18n的,目地是为了让wtforms的内制验证错误能本地化

LANGUAGES = ['zh']
Form类里面也需要加上这句话,基本报错信息会变成中文的

初始化Form的时候,传入 tornado 的 request.arguments,

像这样

class LoginForm(Form):    name = TextField('user', [Required('用户名不能为空'), ])    pwd = PasswordField('pwd', [Required('密码不能为空'), ])    remember = BooleanField('rem')

form = LoginForm(self.request.arguments)
之后调用 form.validate() 验证结果就出来了。

取 数据 可以: name = form.name.data

error的话: form.name.error

转载于:https://my.oschina.net/stardriver/blog/163724

你可能感兴趣的文章
日历 日期时间选择器
查看>>
idea 创建java web项目ssm-gradle
查看>>
Django权限系统auth模块详解
查看>>
pycharm 修改程序运行所需内存
查看>>
Fancybox丰富的弹出层效果
查看>>
.vimrc
查看>>
android studio安装插件
查看>>
7_CentOS下安装和卸载AdobeReader
查看>>
Lucene学习笔记: 五,Lucene搜索过程解析
查看>>
【转】C# Socket编程(5)使用TCP Socket
查看>>
Altium Designer 19 单层显示
查看>>
xml 连表查询(1) --->自关联!模糊查询
查看>>
Python笔记基础篇-Day7
查看>>
LeetCode - Unique Paths
查看>>
shell下批量除去文件名中的空格
查看>>
网站添加icon图标
查看>>
团队项目之分工
查看>>
理解String不可变
查看>>
JAVA核心编程教学
查看>>
ffmpeg截取视频片段
查看>>