一 :RequestHandler

  一般我们继承tornado.web.RequestHandler

  1,RequestHandler.initialize()一般用于初始化,第三个字典参数传入

  

class ProfileHandler(RequestHandler):
def initialize(self, database):
self.database = database def get(self, username):
... app = Application([
(r'/user/(.*)', ProfileHandler, dict(database=database)),
])

  2,RequestHandler.prepare()

    调用 prepare()。无论使用了哪种 HTTP 方法, prepare 都会被调用到, 因此 这个方法通常会被定义在一个基类中, 然后在子类中重用。prepare可以产生输出 信息。如果它调用了finish(或send_error` 等函数), 那么整个处理流程 就此结束。

  3,RequestHandler.on_finish()

    重写结束的方法

  4,RequestHandler.get

    RequestHandler.head

    RequestHandler.post

    RequestHandler.delete

    RequestHandler.path

    RequestHandler.put

    RequestHandler.options

  5,相当于指定,同时也可以增加需要写的函数

    

class WebDAVHandler(RequestHandler):
SUPPORTED_METHODS = RequestHandler.SUPPORTED_METHODS + ('PROPFIND',) def propfind(self):
pass

二:RequestHandler  取出请求结果的方式

    1,RequestHandler.get_argument

    2,RequestHandler.get_arguments

    3,RequeatHandler.get_query_argument

    4,RequestHandler.get_query_arguments

    5,RequestHandler.get_body_argument

    6,RequestHandler.get_body_arguments

    7,RequestHandler.decode_argument

    8,RequestHandler.request

    9,RequestHandler.path_args

    10,RequestHandler.path_kwargs

三 RequestHandler  设置值方式

    1,RequestHandler.set_status(status_codereason=None)

    2,RequestHandler.set_header(namevalue)

    3,RequestHandler.add_header(namevalue)

    4,RequestHandler.clear_header(name)

    5,RequestHandler.set_default_headers()[

    6,RequestHandler.write(chunk)

    7,RequestHandler.flush(include_footers=Falsecallback=None)(缓冲数据等)

    8,RequestHandler.finish(chunk=None)

    9,RequestHandler.render(template_name**kwargs)

    10,RequestHandler.render_string(template_name**kwargs)

    11,RequestHandler.get_template_namespace()

    12,RequestHandler.redirect(urlpermanent=Falsestatus=None)

    13,RequestHandler.send_error(status_code=500**kwargs)

    14,RequestHandler.write_error(status_code**kwargs

    15,RequestHandler.clear()

    16,RequestHandler.data_received(chunk)

四:Cookies

    1,RequestHandler.cookies

    2,RequestHandler.get_cookie(namedefault=None)

    3,RequestHandler.set_cookie(namevaluedomain=Noneexpires=Nonepath='/'expires_days=None,**kwargs)

    4,RequestHandler.clear_cookie(namepath='/'domain=None)

    5,RequestHandler.clear_all_cookies(path='/'domain=None)

    6,RequestHandler.get_secure_cookie(namevalue=Nonemax_age_days=31min_version=None)加密cookies

    7,RequestHandler.get_secure_cookie_key_version(namevalue=None)

    8,RequestHandler.set_secure_cookie(namevalueexpires_days=30version=None**kwargs)

    9,tornado.web.MIN_SUPPORTED_SIGNED_VALUE_VERSION= 1

    10,tornado.web.MAX_SUPPORTED_SIGNED_VALUE_VERSION= 2

    11,tornado.web.DEFAULT_SIGNED_VALUE_VERSION= 2

    12,tornado.web.DEFAULT_SIGNED_VALUE_MIN_VERSION= 1

五:其他

    

当前通过认证的用户在请求处理器的 self.current_user 当中, 而且还存在于模版中的current_user. 默认情况下, current_user 的值为 None.

为了在你的应用程序中实现用户认证, 你需要覆盖请求控制器中的 get_current_user() 方法 来确认怎样获取当前登陆的用户, 例如, 从 cookie 的值中获取该信息. 下面这个例子展示了通过用户的昵称来确定用户身份, 值被保存在 cookies 中:

class BaseHandler(tornado.web.RequestHandler):
def get_current_user(self):
return self.get_secure_cookie("user") class MainHandler(BaseHandler):
def get(self):
if not self.current_user:
self.redirect("/login")
return
name = tornado.escape.xhtml_escape(self.current_user)
self.write("Hello, " + name) class LoginHandler(BaseHandler):
def get(self):
self.write('<html><body><form action="/login" method="post">'
'Name: <input type="text" name="name">'
'<input type="submit" value="Sign in">'
'</form></body></html>') def post(self):
self.set_secure_cookie("user", self.get_argument("name"))
self.redirect("/") application = tornado.web.Application([
(r"/", MainHandler),
(r"/login", LoginHandler),
], cookie_secret="__TODO:_GENERATE_YOUR_OWN_RANDOM_VALUE_HERE__")

    1,RequestHandler.current_user()用于检查用户登录

def get_current_user(self):
user_cookie = self.get_secure_cookie("user")
if user_cookie:
return json.loads(user_cookie)
return None

      如果用prepare()初始化必须是gen.coroutine,,,结束yeile才可以以

    

@gen.coroutine
def prepare(self):
user_id_cookie = self.get_secure_cookie("user_id")
if user_id_cookie:
self.current_user = yield load_user(user_id_cookie)

六:装饰器

    1,tornado.web.asynchronous(method)

      一般适用于http开头的请求方式

      

class MyRequestHandler(RequestHandler):
@asynchronous
def get(self):
http = httpclient.AsyncHTTPClient()
http.fetch("http://friendfeed.com/", self._on_download) def _on_download(self, response):
self.write("Downloaded!")
self.finish()

    2,tornado.web.authenticated(method)

      用于判断是否登录状态

    3,classtornado.web.FallbackHandler(applicationrequest**kwargs)

      

wsgi_app = tornado.wsgi.WSGIContainer(
django.core.handlers.wsgi.WSGIHandler())
application = tornado.web.Application([
(r"/foo", FooHandler),
(r".*", FallbackHandler, dict(fallback=wsgi_app),
])

下面列出RequestHandler中需要重写的方法

RequestHandler.initialize()
RequestHandler.prepare()
RequestHandler.get()
RequestHandler.post()
RequestHandler.put()
RequestHandler.delete()
RequestHandler.option()
RequestHandler.patch()
RequestHandler.head()
RequestHandler.on_finish()
RequestHandler.set_default_headers()
RequestHandler.get_template_namespace()
RequestHandler.create_template_loader()
RequestHandler.write_error(status_code, **kwargs)
RequestHandler.get_user_locale()
RequestHandler.get_current_user()
RequestHandler.get_login_url()
RequestHandler.get_template_path()
RequestHandler.compute_etag()
RequestHandler.data_received()
RequestHandler.log_exception()

更过可以参考:http://tornado-zh-cn.readthedocs.io/zh_CN/latest/web.html#tornado.web.RequestHandler

tornado requesthandler可以重写的方法的更多相关文章

  1. Tornado 自定义Form,session实现方法

    一. 自定义Tornado 验证模块 我们知道,平时在登陆某个网站或软件时,网站对于你输入的内容是有要求的,并且会对你输入的错误内容有提示,对于Django这种大而全的web框架,是提供了form表单 ...

  2. tornado自定义实现django include方法

    tornado自定义实现django  include方法 自定义URLmethod模块 from Custom.errors import * def include(base_url, expan ...

  3. .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]

    方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...

  4. EF里查看/修改实体的当前值、原始值和数据库值以及重写SaveChanges方法记录实体状态

    本文目录 查看实体当前.原始和数据库值:DbEntityEntry 查看实体的某个属性值:GetValue<TValue>方法 拷贝DbPropertyValues到实体:ToObject ...

  5. 【java开发】方法重写和方法重载概述

    类的继承   父类-子类 关键字 extends 新建一个父类 public class Person {     private String name;          private int ...

  6. android中使用startactivityforresult跳转Activity后需要重写onBackPressed()方法

    在android项目中经常会用startactivityforresult从一个Activity跳转到另一个Activity(这里指Activity_A和Activity_B),你可以从Activit ...

  7. 重写toString()方法来描述一个类

    package com.zch.test; /* toString方法以及重写toString方法 toString方法是一个自我描述方法 方法本身返回的是该对象的实现类的 类名 + @ + hash ...

  8. 重写ajax方法实现异步请求session过期时跳转登录页面

    jQuery(function($){ // 备份jquery的ajax方法 var _ajax=$.ajax; // 重写ajax方法, $.ajax=function(opt){ var _suc ...

  9. 为什么重写equals时必须重写hashCode方法?

    原文地址:http://www.cnblogs.com/shenliang123/archive/2012/04/16/2452206.html 首先我们先来看下String类的源码:可以发现Stri ...

随机推荐

  1. iOS开发多线程篇 05 —GCD介绍

    iOS开发多线程篇—GCD介绍 一.简单介绍 1.什么是GCD? 全称是Grand Central Dispatch,可译为“牛逼的中枢调度器” 纯C语言,提供了非常多强大的函数 2.GCD的优势 G ...

  2. 浏览器在线打开pdf

    https://www.cnblogs.com/Leo_wl/p/5735001.html#_label0 https://blog.csdn.net/li_cheng_liang/article/d ...

  3. CCNA2.0笔记_ipv6的EIGRP

    IPv6的eigrp特征: 邻居发现 增量更新 快速收敛 负载均衡 三个表 -邻居表 -拓扑表 -路由表 配置ipv6的eigrp Router(config)#ipv6 unicast-routin ...

  4. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown character set: 'utf8mb4'

    排除 1.mysql 是utf8 2.连接url加了useUnicode=true&&characterEncoding=utf8 3.项目也没有用到utf8mb4 由于是mysql驱 ...

  5. Android开发基本入门,对于事件、适配器的理解不够深入

    能到处抄点代码搞出东西来了,但对事件.对ListView这类的控件,数据解析后的视图绑定,还没有完全搞清原理. 真是年纪越大,学习能力越差了.

  6. 什么是KBEngine

    本文转自:https://github.com/harmy/kbengine 资源下载地址:http://sourceforge.net/projects/kbengine/files/ 什么是KBE ...

  7. Flea Circus(Project Euler 213)

    original version hackerrank programming version 题目大意是N*N的格子,每个格子一开始有1个跳蚤,每过单位时间跳蚤会等概率向四周跳,问M秒后空格子的期望 ...

  8. 在Intellij IDEA下用X-debug调试PHP

    用Intellij IDEA使用X-debug来调试PHP,主要需要配置的部分有三个地方,分别为php.ini的配置,IDEA的配置和浏览器的配置,主要如下: php.ini(wamp修改的是phpF ...

  9. Linux系统常用工具集

    整理Linux系统下一些日常工作中常用工具,旨在提高效率: 1.截图软件Shutter 2.通讯聊天工具pidgin 3.守护进程工具daemontools 4.远程桌面服务TigerVNC 5.Ma ...

  10. python解释器的分类及特点

    CPython 当从Python官方网站下载并安装好Python2.7后,就直接获得了一个官方版本的解释器:Cpython,这个解释器是用C语言开发的,所以叫CPython,在命名行下运行python ...