首页 > 代码库 > tornado.web.Application类配置及使用
tornado.web.Application类配置及使用
Application configuration
- class
tornado.web.
Application
(handlers=None, default_host=‘‘, transforms=None, **settings)[source] A collection of request handlers that make up a web application.
Instances of this class are callable and can be passed directly to HTTPServer to serve the application:
application = web.Application([ (r"/", MainPageHandler),])http_server = httpserver.HTTPServer(application)http_server.listen(8080)ioloop.IOLoop.current().start()
The constructor for this class takes in a list of
URLSpec
objects or (regexp, request_class) tuples. When we receive requests, we iterate over the list in order and instantiate an instance of the first request class whose regexp matches the request path. The request class can be specified as either a class object or a (fully-qualified) name.Each tuple can contain additional elements, which correspond to the arguments to the
URLSpec
constructor. (Prior to Tornado 3.2, only tuples of two or three elements were allowed).A dictionary may be passed as the third element of the tuple, which will be used as keyword arguments to the handler’s constructor and
initialize
method. This pattern is used for theStaticFileHandler
in this example (note that aStaticFileHandler
can be installed automatically with the static_path setting described below):application = web.Application([ (r"/static/(.*)", web.StaticFileHandler, {"path": "/var/www"}),])
We support virtual hosts with the
add_handlers
method, which takes in a host regular expression as the first argument:application.add_handlers(r"www\.myhost\.com", [ (r"/article/([0-9]+)", ArticleHandler),])
You can serve static files by sending the
static_path
setting as a keyword argument. We will serve those files from the/static/
URI (this is configurable with thestatic_url_prefix
setting), and we will serve/favicon.ico
and/robots.txt
from the same directory. A custom subclass ofStaticFileHandler
can be specified with thestatic_handler_class
setting.settings
Additional keyword arguments passed to the constructor are saved in the
settings
dictionary, and are often referred to in documentation as “application settings”. Settings are used to customize various aspects of Tornado (although in some cases richer customization is possible by overriding methods in a subclass ofRequestHandler
). Some applications also like to use thesettings
dictionary as a way to make application-specific settings available to handlers without using global variables. Settings used in Tornado are described below.一般设置:
autoreload
: 如果设置True
,如果文件有变化进程将自动重启, 在 Debug mode and automatic reloading(DeBug模式和自动装载的情况下自动开启).debug
: 几种配置的集合, 具体查看 Debug mode and automatic reloading. 设置debug=True 相当于设置
autoreload=True
,compiled_template_cache=False
,static_hash_cache=False
,serve_traceback=True
.default_handler_class
anddefault_handler_args
: 在页面没有找到(404错误的时候)自定义404错误页视图动作类及参数compress_response
: 如果设置True
, responses(响应)将被自动压缩gzip
: 在Tornado 4.0被compress_response代替
log_function
: 这个函数用来回调RequestHandler
对象的处理结果,默认主程序导入logging并配置好的话会自动记录
.也可以定制Application.log_request这个方法
.serve_traceback
: 如果设置 true,错误页面将包含错误跟踪ui_modules
andui_methods
: 配置UIModule
或 UI methods配置模版可用的帮助方法. 可以是一个模块、字典或一个模块或者字典的列表. 更多细节查看 UI modules
认证和安全设置:
cookie_secret
: 被RequestHandler.get_secure_cookie和
set_secure_cookie用来配置cookie的标志
key_version
: 被set_secure_cookie
用来配置cookie的标志时cookie_secret的一个key
login_url
: 如果没有用户登录这个authenticated
装饰器将被重新定义到. 可以进一步重写RequestHandler.get_login_url
xsrf_cookies
: If true, Cross-site request forgery protection will be enabled.xsrf_cookie_version
: Controls the version of new XSRF cookies produced by this server. Should generally be left at the default (which will always be the highest supported version), but may be set to a lower value temporarily during version transitions. New in Tornado 3.2.2, which introduced XSRF cookie version 2.xsrf_cookie_kwargs
: May be set to a dictionary of additional arguments to be passed toRequestHandler.set_cookie
for the XSRF cookie.twitter_consumer_key
,twitter_consumer_secret
,friendfeed_consumer_key
,friendfeed_consumer_secret
,google_consumer_key
,google_consumer_secret
,facebook_api_key
,facebook_secret
: Used in thetornado.auth
module to authenticate to various APIs.
模版设置:
autoescape
: 制对模板的自动转义. 可以被设置为 None 以禁止转义, 或设置为一个所有输出都该传递过数 name . 默认是 "xhtml_escape". 可以在每个模板中改变使用 {% autoescape %} 指令.compiled_template_cache
: 默认True
; 如果False 每次请求将重新加载模版
template_path
: 模版文件目录. 可以被RequestHandler.get_template_path获取进行重写
template_loader
: 分配一个tornado.template.BaseLoader进行模版加载
.如果设置了template_path和
autoescape将失效
. 可以被RequestHandler.create_template_loader进一步重写
.template_whitespace
: 对于模板中的空白处理; 详细用法请看tornado.template.filter_whitespace
静态文件设置:
static_hash_cache
: 默认True
; 如果False
静态 urls 将重新加载静态文件static_path
: 静态文件的目录static_url_prefix
: 静态文件的Url前缀, 默认为"/static/"
.static_handler_class
,static_handler_args
: 可以自定义处理静态文件的动作和参数,而不是默认的tornado.web.StaticFileHandler
.static_handler_args
, 如果设置了,应该有一个字典被传入到动作类的initialize
方法中
listen
(port, address=‘‘, **kwargs)[source]Starts an HTTP server for this application on the given port.
This is a convenience alias for creating an
HTTPServer
object and calling its listen method. Keyword arguments not supported byHTTPServer.listen
are passed to theHTTPServer
constructor. For advanced uses (e.g. multi-process mode), do not use this method; create anHTTPServer
and call itsTCPServer.bind
/TCPServer.start
methods directly.Note that after calling this method you still need to call
IOLoop.current().start()
to start the server.Returns the
HTTPServer
object.Changed in version 4.3: Now returns the
HTTPServer
object.
add_handlers
(host_pattern, host_handlers)[source]Appends the given handlers to our handler list.
Host patterns are processed sequentially in the order they were added. All matching patterns will be considered.
reverse_url
(name, *args)[source]Returns a URL path for handler named
name
The handler must be added to the application as a named
URLSpec
.Args will be substituted for capturing groups in the
URLSpec
regex. They will be converted to strings if necessary, encoded as utf8, and url-escaped.
log_request
(handler)[source]Writes a completed HTTP request to the logs.
By default writes to the python root logger. To change this behavior either subclass Application and override this method, or pass a function in the application settings dictionary as
log_function
.
tornado.web.Application类配置及使用