专栏首页python3tornado学习笔记

tornado学习笔记

一.UIMOTHODS:

1.在项目目录创建uimothods.py文件(名称可以任意)
内容:
def test2(self):
    return ('hello uimothods')

2.tornado项目文件中导入并注册:
#导入
from utils import uimothods as mt
#注册
settings = {

    'ui_modules': mt
}
3.在html中调用uimethod
{{test2()}}

二.UImodules:
1.在项目目录创建uimodules.py文件(名称可以任意)
from tornado.web import UIModule
from tornado import escape
class test(UIModule):
    def render(self, *args, **kwargs):
        return ('<h1>UIMODULES</h1>') #返回html文件,不转义
        #return escape.xhtml_escape('<h1>UIMODULES</h1>') #对返回内容进行转义
    def embedded_javascript(self):#在html中插入js
        return 'a.js'
    def embedded_css(self):#在html中插入css
        return 'a.css'

View Code

2.tornado项目文件中导入并注册:
#导入
from utils import uimodules as md
#注册
settings = {

    'ui_modules': md
}
3.在html中调用uimodules
{% module test(123) %}

二者区别:uimothods用函数定义,uimodule用类的方式定义,且可以返回时直接在模板加入js/css等
二。html转意。
1.在uimodule中可以用:
from
tornado import escape
escape.xhtml_escape('<h1>wupeiqi</h1>')
2.在html中可以直接使用raw
{{ raw test}}

#1.全局转义,在Application中添加配置项

autoescape=None,

#2.在文档最开始添加

{% autoescape None %} #实现整个文档转义

#在开启全局和文档不转义的情况下,可以使用 escape() 来开启变量的转义

{{ atag }}
{{ escape(atag) }}

#3.也可以使用 {% raw xxx %} 来输出不转义内容

{% raw atag %}

tornado是默认自动开启转义的,大家可以根据需求来选是否转义,但是要知道转义的本意是来防止浏览器意外执行恶意代码的,所以去掉转义的时候需要谨慎选择

开发简单tornado Form功能

VIEW代码:

import re
import tornado.web
class EmailField:
    def __init__(self,name):
        self.name=name
        self.value=''
        self.error=''
        self.reg=".+@.+\.(com|cn)$"
    def __str__(self):
        return '<input type="text" value="%s" name="%s">'%(self.value,self.name)

class TextField:
    def __init__(self,name):
        self.name=name
        self.value=''
        self.error=''
        self.reg=".+"
    def __str__(self):
        return '<input type="text" value="%s" name="%s">'%(self.value,self.name)

class LoginForm:
    def __init__(self):
        self.email=EmailField('email')
        self.username=TextField('username')
    def is_valid(self,request):
        value_dict={}#将用户通过校验的值保存到字典中
        flags=True  
        for k,v in self.__dict__.items():
            user_input=request.get_body_argument(k) #获取用户输入的值
            if re.match(v.reg,user_input):    #正则匹配用户输入的值
                value_dict[k]=user_input
            else:
                flags=False               #如果有一条匹配失败,结果返回false
                if user_input =='':
                    v.error='%s字段不能为空'%k
                else:
                    v.error='请输入正确的格式!'
            v.value=user_input            #如果用户输入错误将用户的输入返回到页面上!(保留错误结果)
        return flags,value_dict          #返回数据正则匹配结果及用户正则匹配成功的字段

class login(tornado.web.RequestHandler):
    def get(self, *args,**kwargs):
        obj=LoginForm()
        self.render('login.html',**{'obj':obj})
    def post(self, *args, **kwargs):
        obj=LoginForm()
        res,val=obj.is_valid(self)
        if res:
            print('用户输入的正确数据',val)
            self.write('数据已提交成功!')
        else:
            self.render('login.html',**{'obj':obj})



settings={
    'template_path':'template'
}
application=tornado.web.Application([
    (r'/login',login),
],**settings)
if __name__ == '__main__':
    application.listen(80)
    tornado.ioloop.IOLoop.instance().start()

View Code

 前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form method="POST">
        <p>username{% raw obj.username %}{{obj.username.error}}</p>
        <p>email{% raw obj.email    %}{{obj.email.error}}</p>
        <p><input type="submit" value="提交"></p>
    </form>
</body>
</html>

View Code

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 三、wss连接B站弹幕

    py3study
  • python3爬虫-通过requests

    py3study
  • python写一个简单的俄罗斯方块

    self.color = ['red','orange','yellow','purple','blue','green','pink']

    py3study
  • Pyqt 主窗口(QMainWindow)简介

    下面我写了一个简单的例子,只实现了极少数的功能,仅供参考。后续会详细介绍主窗口(QMainWindow)程序各个部分的写法。推荐在浏览器中打开并横屏查看代码。

    用户6021899
  • 利用Python编写一个行业专用的小计算器

    前言:本文讲述的是如何利用python编程制作一个适用于指定行业的计算器,方便计算结果,涵盖的知识点由Python编写GUI界面程序,利用爬虫采集实时的汇率数据...

    用户7886150
  • python项目练习十:DIY街机游戏

    终于来到了最后一个项目,看看前面的那些练习,也算是熟悉了python的基本操作,也知道python能干哪些事情,最后一个项目相比于以前的稍微复杂些,但是任何一个...

    the5fire
  • vn.py源码解读(一、环境配置与回测初试)

            近来忙于毕业找工作,也不知道能不能继续在量化界混了。周末比较闲,抽空研究了一下vn.py。有人说,为什么学那么多的回测平台呀。其实我个人觉得,做...

    钱塘小甲子
  • python的tkinter编程(九)Text多行文本框的详细解读

    一天不写程序难受
  • python的tkinter编程(八)Entry组件的详细介绍,以登录界面作为讲解

    写一个按钮,绑定一个方法,当点击这个按钮的时候,就会执行这个方法,在这个方法里面 获取到对应的你输入的值,将获取到的值传到数据库里面进行比对,失败给一个返回的...

    一天不写程序难受
  • vn.py源码解读(四、主引擎代码分析----初始化函数)

            vnpy有一个叫做主引擎的东西,在三里面也说过,个人觉得这个应该是一个运行框架的东西,不应该叫做引擎,不过没关系,名字而已嘛。这一篇呢主要就是分...

    钱塘小甲子

扫码关注云+社区

领取腾讯云代金券