iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >tornado学习笔记
  • 534
分享到

tornado学习笔记

学习笔记tornado 2023-01-30 23:01:20 534人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

一.UIMOTHODS: 1.在项目目录创建uimothods.py文件(名称可以任意)内容: def test2(self): return ('hello uimothods')2.tornado项目文件中导入并注册: #导入f

一.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

 





--结束END--

本文标题: tornado学习笔记

本文链接: https://www.lsjlt.com/news/180607.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • tornado学习笔记
    一.UIMOTHODS: 1.在项目目录创建uimothods.py文件(名称可以任意)内容: def test2(self): return ('hello uimothods')2.tornado项目文件中导入并注册: #导入f...
    99+
    2023-01-30
    学习笔记 tornado
  • 学习笔记-TP5框架学习笔记\(路由\)
    TP5框架简单理解 (PS:只做粗略、关键知识的记录,TP程序的开始。详情请阅读官方手册) 1. 架构总览 TP程序的开始 PHP >=5.3.0, PHP7 ThinkPHP5.0应用基于MVC(模型-视图-控制器)的方...
    99+
    2023-10-25
    学习 php 开发语言
  • H3CNE学习笔记
      H3CNE五日“游” ——之第一天 废话少说 直接进入真题!!!!(哈哈 ) H3CNE   H3C认证初级网络工程师 第    一   节 路由器、交换机及其操作系统介绍 路由器 1、 路由器的作用 连接具有不同介质的链路 连接网络或...
    99+
    2023-01-31
    学习笔记 H3CNE
  • Python学习笔记
    Python介绍 Python是一种解释型、面向对象的语言。 官网:www.python.org Python环境 解释器:www.python.org/downloads 运行方式: 交互模式。在IDLE中运行。 脚本模式。文件的后缀...
    99+
    2023-01-30
    学习笔记 Python
  • python_os_sys学习笔记
    sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sy...
    99+
    2023-01-31
    学习笔记 python_os_sys
  • Python 学习笔记
    rs=Person.objects.all() all返回的是QuerySet对象,程序并没有真的在数据库中执行SQL语句查询数据,但支持迭代,使用for循环可以获取数据。 print rs.query 会打印出原生sql语句 rs=Pe...
    99+
    2023-01-31
    学习笔记 Python
  • 学习笔记(3)
    1.* 匹配零个或多个字符(通配符中)2.ls 的-d选项不仅仅可以显示指定目录的信息,还可以用来表示不递归子文件夹。  # ls -dl /etc 显示/etc目录的信息  # ls -d /etc 只显示/etc下面的文件夹3.显示/v...
    99+
    2023-01-31
    学习笔记
  • GNS3学习笔记
    最近在自学CCNA,为了搭建路由模拟器先后下载了Boson Network 、DynamipsGUI用的不是很顺手,后来听朋友推荐GNS3很好用,他们报的CCNP培训班老师用的就是GNS,平时的模拟实验都是用这个完成的,由于我本机已有下好的...
    99+
    2023-01-31
    学习笔记
  • python3学习笔记
    好久不用python,努力捡起来ing python3语法 字符串 repr()把其他类型变量转换为字符串 ord()把单个字符转换为相应的ascii码 int()把其他进制的“字符串”转换为十进制 int(str,n...
    99+
    2023-01-31
    学习笔记
  • Kafka 学习笔记
    😀😀😀创作不易,各位看官点赞收藏. 文章目录 Kafka 学习笔记1、消息队列 MQ2、Kafka 下载安装2.1、Zookeeper 方式启动2.2、KRaft 协议启动2.3...
    99+
    2023-08-30
    kafka 学习 笔记
  • MySQL 学习笔记
    😀😀😀创作不易,各位看官点赞收藏. 文章目录 MySQL 学习笔记1、`DQL` 查询语句1.1、基本查询1.2、函数查询1.2.1、单行函数1...
    99+
    2023-10-01
    mysql 学习 笔记
  • python3 学习笔记
    本人很少写 python 代码, 一般都是用 go 的, 去年时用 python 写过一些收集系统信息的工具, 当时是边看手册边写的. 如今又要用 python 来写一个生成 xlsx 的工具, 就又需要查看手册了, 至于为什么不用 g...
    99+
    2023-01-31
    学习笔记
  • 学习笔记3
    一文件查找和压缩1文件查找locate 搜索依赖于数据库,非实时搜索,搜索新建文件需手动更新,适于搜索稳定不频繁修改文件 find 实时搜索,精确搜索,默认当前目录递归搜索 find用法 -maxdepth...
    99+
    2023-01-31
    学习笔记
  • Python Paste 学习笔记
    一、写在前面 这篇文章主要介绍了Python的Paste库的使用,学习过程中主要参考官网文档以及自己的理解,整理成笔记以便后续自己查阅。 如果转载,请保留作者信息。 邮箱地址:jpzhang.ht@gmail.com ...
    99+
    2023-01-31
    学习笔记 Python Paste
  • python OpenCV学习笔记
    目录图像翻转图像轮廓排序图像轮廓排序颜色识别基础颜色识别根据BGR获取HSV阈值编辑器图像翻转 使用Python的一个包,imutils。使用下面的指令可以安装。 pip in...
    99+
    2024-04-02
  • Python学习笔记(1)
    Python开发框架:       a.Python基础;       b.网络编程;       c.WEB框架;       d.设计模式+算法;       e.项目阶段; 开发:   开发语言:       高级语言:Python...
    99+
    2023-01-30
    学习笔记 Python
  • Python学习笔记(二)
    学完了基础中的基础后,我们准备深入基础中的函数、类和对象。 function函数: 正如英文单词描述的,函数就是“功能”的意思,把完成一个功能所需要的代码打包起来放在一个函数下可以方便以后程序的重复调用,也能使整体代码条理清晰。正如前...
    99+
    2023-01-30
    学习笔记 Python
  • python-memcached学习笔记
    介绍:   memcached是免费、开源、高性能、分布式内存对象的缓存系统(键/值字典),旨在通过减轻数据库负载加快动态web应用程序的使用。   数据类型:只用一种字符串类型 1:安装 sudo apt-get install me...
    99+
    2023-01-31
    学习笔记 python memcached
  • NumPy 学习笔记(四)
    NumPy 算术函数:   1、numpy.reciprocal(arr) 返回参数逐个元素的倒数   2、numpy.power(one, two) 将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂,即 one^t...
    99+
    2023-01-31
    学习笔记 NumPy
  • PowerShell 学习笔记(3)
    获取对象的过程中,最好先筛选出对象,再进行操作。(即筛选在排序左边)不区分大小写get-process | where {$_.handles –ge 1000}使用where获取所有对象,用对象执行大括号里的代码,如果...
    99+
    2023-01-31
    学习笔记 PowerShell
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作