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'
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()
tornado.ioloop.IOLoop.instance().start()
前端代码:
<!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>
tornado学习笔记的更多相关文章
- tornado 学习笔记1 引言
从事软件开发这行业也快5年啦,其实从事的工作也不完全是软件开发,软件开发只是我工作中的一部分.其中包括课题研究.信息化方案设计.软件开发.信息系统监理.项目管理等工作,比较杂乱.开发的软件比较多,但是 ...
- Tornado学习笔记(一) helloword/多进程/启动参数
前言 当你觉得你过得很舒服的时候,你肯定没有在进步.所以我想学习新的东西,然后选择了Tornado.因为我觉得Tornado更匹配目前的我的综合素质. Tornado学习笔记系列主要参考<int ...
- tornado 学习笔记2 Python web主流框架
2.1 Django 官方网址:https://www.djangoproject.com/ 简介:Django is a high-level Python Web framework that e ...
- Tornado学习笔记(三) 请求方式/状态码
本章我们来学习 Tornado 支持的请求方式 请求方式 Tornado支持任何合法的HTTP请求(GET.POST.PUT.DELETE.HEAD.OPTIONS).你可以非常容易地定义上述任一种方 ...
- Tornado学习笔记(二) 路由/post/get传参
本章我们学习 Tornado 的路由传参等问题 路由 路由的匹配 Tornado的路由匹配采用的是正则匹配 一般情况下不需要多复杂的正则,正则的基本规则如下(站长之家) 举个例子 (r'/sum/(\ ...
- tornado学习笔记19 Tornado框架分析
19.1 Http服务器请求处理流程图 (1) 调用HTTPServer的bind方法,绑定Socket的监听端口号: (2) 调用HTTPServer的listen方法,初始化一个listen so ...
- tornado学习笔记11 Web应用中模板(Template)使用应用实践
上一篇中(Web应用中模板的工作流程分析),已经分析了模板的渲染流程,以及相关参数获取及设置原理.这篇主要讲述模板在实际应用案例. 11.1 需求 根据用户输入的两次密码,判断两次密码是否一致,并将判 ...
- tornado 学习笔记15 _ServerRequestAdapter分析
继承于HTTPMessageDeletegate,是HTTPMessageDeletegate的一种实现,用于处理请求消息. 15.1 构造函数 def __init__(self, ser ...
- tornado 学习笔记9 Tornado web 框架---模板(template)功能分析
Tornado模板系统是将模板编译成Python代码. 最基本的使用方式: t = template.Template("<html>{{ myv ...
- tornado 学习笔记10 Web应用中模板(Template)的工作流程分析
第8,9节中,我们分析Tornado模板系统的语法.使用以及源代码中涉及到的相关类,而且对相关的源代码进行了分析.那么,在一个真正的Web应用程序中,模板到底是怎样使用?怎样被渲染? ...
随机推荐
- 简单实现MySQL数据库的日志审计
时间 2018-12-23 08:01:11 FreeBuf 原文 https://www.freebuf.com/articles/es/192062.html 主题 MySQL 0×0 背景 ...
- sql server数据导入导出方法统计
常用的数据量不是很大的情况的几种方法:转载地址 http://www.cnblogs.com/changbluesky/archive/2010/06/23/1761779.html 大数据量的推荐导 ...
- [Python_2] Python 基础
0. 说明 Python 基础笔记,使用的版本为 Python 3.6.2 Python 的变量.字符串操作.list.元组.字典.循环.range.类型转换.运算等操作. 1. 引号的使用 字符串使 ...
- Django商城项目笔记No.5用户部分-注册接口-短信验证码
Django商城项目笔记No.4用户部分-注册接口-短信验证码 短信验证码也保存在redis里(sms_code_15101234567) 在views中新增SMSCodeView类视图,并且写出步骤 ...
- 页面元素固定在页面底部的纯css代码(兼容IE6)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- XSS详解
什么是XSS(跨站脚本攻击) XSS又叫CSS (Cross Site Script) ,跨站脚本攻击.它指的是恶意攻击者往Web页面里插入恶意html代码或者javascript代码,当用户浏览该页 ...
- python第三十课--异常(异常处理定义格式和常见类型)
演示: 1).异常处理的定义格式: 2).常见的运行时异常类型: try: print(10/0) num=int('132a') except Exception as e: print('出错了. ...
- NOIP模拟赛-2018.11.5
NOIP模拟赛 好像最近每天都会有模拟赛了.今天从高二逃考试跑到高一机房,然而高一也要考试,这回好像没有拒绝的理由了. 今天的模拟赛好像很有技术含量的感觉. T1:xgy断句. 好诡异的题目,首先给出 ...
- Sqoop学习之路 (一)
一.概述 sqoop 是 apache 旗下一款“Hadoop 和关系数据库服务器之间传送数据”的工具. 核心的功能有两个: 导入.迁入 导出.迁出 导入数据:MySQL,Oracle 导入数据到 H ...
- 列表操作方法,元祖,for循环嵌套
li = ['alex','wusir''女神']增 1.增加到列表末位 li.append() 连续增加,输入q停止 li = ['alex','wusir''女神'] while 1: s = i ...