tornado的settings有哪些可以设置

本文详细介绍了Tornado Web框架的常规设置、身份验证和安全设置、模板设置以及静态文件设置,包括autoreload、debug、cookie_secret、template_path等关键配置项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官方文档:

http://www.tornadoweb.org/en/stable/web.html#tornado.web.Application.settings

 

谷歌中文翻译后直接复制的

常规设置:

  • autoreload:如果True,任何源文件更改时服务器进程将重新启动,如调试模式和自动重新加载中所述。此选项是Tornado 3.2中的新选项; 以前此功能由debug设置控制。
  • debug:几种调试模式设置的简写,在调试模式和自动重新加载中描述。设置debug=True相当于autoreload=Truecompiled_template_cache=Falsestatic_hash_cache=Falseserve_traceback=True
  • default_handler_classand default_handler_args:如果没有找到其他匹配项,将使用此处理程序; 使用它来实现自定义404页面(Tornado 3.2中的新增功能)。
  • compress_response:如果True,文本格式的响应将自动压缩。Tornado 4.0的新功能。
  • gzipcompress_response自Tornado 4.0以来已弃用的别名。
  • log_function:此函数将在每个记录结果的请求结束时调用(使用一个参数,即RequestHandler对象)。默认实现将写入logging模块的根记录器。也可以通过覆盖来定制Application.log_request
  • serve_traceback:如果True,默认错误页面将包含错误的回溯。此选项是Tornado 3.2中的新选项; 以前此功能由debug设置控制。
  • ui_modulesui_methods:可以设置为UIModule可用于模板的映射或UI方法。可以设置为模块,字典或模块和/或dicts列表。有关详细信息,请参阅UI模块
  • websocket_ping_interval:如果设置为数字,则每n秒钟将对所有websockets进行ping操作。这有助于通过关闭空闲连接的某些代理服务器保持连接活动,并且它可以检测websocket是否在未正确关闭的情况下发生故障。
  • websocket_ping_timeout:如果设置了ping间隔,并且服务器在这么多秒内没有收到“pong”,它将关闭websocket。默认值是ping间隔的三倍,最少30秒。如果未设置ping间隔,则忽略。

身份验证和安全设置:

  • cookie_secret:用于RequestHandler.get_secure_cookie 和set_secure_cookie签署cookie。
  • key_versionset_secure_cookie 当cookie_secret 是密钥字典时,requestHandler 使用特定密钥对cookie进行签名。
  • login_urlauthenticated如果用户未登录,装饰器将重定向到此URL。可以通过覆盖进一步自定义RequestHandler.get_login_url
  • xsrf_cookies:如果True,将启用跨站点请求伪造保护
  • xsrf_cookie_version:控制此服务器生成的新XSRF cookie的版本。通常应该保留默认值(它始终是支持的最高版本),但可以在版本转换期间临时设置为较低的值。Tornado 3.2.2中的新功能,它引入了XSRF cookie版本2。
  • xsrf_cookie_kwargs:可以设置为要传递给RequestHandler.set_cookie XSRF cookie 的其他参数的字典。
  • twitter_consumer_keytwitter_consumer_secretfriendfeed_consumer_keyfriendfeed_consumer_secretgoogle_consumer_keygoogle_consumer_secret, facebook_api_keyfacebook_secret:所用的 tornado.auth模块来验证各种API。

模板设置:

  • autoescape:控制模板的自动转义。可以设置为None禁用转义,或者设置 应该传递所有输出的函数的名称。默认为"xhtml_escape"。可以使用该指令在每个模板的基础上进行更改。{% autoescape %}
  • compiled_template_cache:默认是True; 如果False 每个请求都会重新编译模板。此选项是Tornado 3.2中的新选项; 以前此功能由debug设置控制。
  • template_path:包含模板文件的目录。可以通过覆盖进一步定制RequestHandler.get_template_path
  • template_loader:分配给tornado.template.BaseLoader自定义模板加载的实例 。如果使用此 设置,则忽略template_pathautoescape设置。可以通过覆盖进一步定制RequestHandler.create_template_loader
  • template_whitespace:控制模板中空格的处理; 查看tornado.template.filter_whitespace允许的值。Tornado 4.3中的新功能。

静态文件设置:

  • static_hash_cache:默认是True; 如果False 每次请求都会重新计算静态网址。此选项是Tornado 3.2中的新选项; 以前此功能由debug设置控制。
  • static_path:将从中提供静态文件的目录。
  • static_url_prefix:静态文件的Url前缀,默认为"/static/"
  • static_handler_classstatic_handler_args:可以设置为静态文件而不是默认文件使用不同的处理程序 tornado.web.StaticFileHandler。 static_handler_args如果设置,则应该是要传递给处理程序initialize方法的关键字参数的字典。

 

### 配置认证参数 在 Tornado Web 框架中,可以通过设置特定的应用程序配置项来启用用户身份验证功能。这些配置项通常作为字典传递给 `tornado.web.Application` 构造函数。 #### 设置登录URL 当某个处理程序的方法被标记为需要认证(即使用了 `@tornado.web.authenticated` 装饰器),而此时没有有效的会话存在,则客户端将被重定向至指定的登录页面地址。此行为由 `login_url` 参数控制[^2]: ```python settings = { "login_url": "/login", } application = tornado.web.Application([ (r"/", MainHandler), (r"/login", LoginHandler), ], **settings) ``` #### 使用安全Cookie保护Session数据 为了防止跨站脚本攻击并确保用户的会话信息安全,在创建Web应用程序实例时还可以定义一个复杂的字符串用于加密签名Cookies。这通过设定名为 `cookie_secret` 的键值对完成: ```python settings = { "cookie_secret": "61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo=", } application = tornado.web.Application([], **settings) ``` #### 启用CSRF防护机制 开启 `xsrf_cookies` 可让Tornado自动管理CSRF令牌,并强制要求所有的POST请求都携带正确的_XSRF_TOKEN字段;否则该HTTP请求将会遭到拒绝响应。这对于提高网站安全性非常有帮助[^5]: ```python settings = { "xsrf_cookies": True, } application = tornado.web.Application([], **settings) ``` 综上所述,完整的认证相关配置如下所示: ```python import tornado.ioloop import tornado.web class BaseHandler(tornado.web.RequestHandler): pass class MainHandler(BaseHandler): @tornado.web.authenticated def get(self): name = tornado.escape.xhtml_escape(self.current_user) self.write("Hello, " + name) def make_app(): settings = { "cookie_secret": "61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo=", "login_url": "/login", "xsrf_cookies": True, } return tornado.web.Application([ (r"/", MainHandler), # Add other handlers here... ], **settings) if __name__ == "__main__": app = make_app() app.listen(8888) tornado.ioloop.IOLoop.current().start() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值