# tornado_learning **Repository Path**: whiteYL/tornado_learning ## Basic Information - **Project Name**: tornado_learning - **Description**: 初步学习tornado框架的使用 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-05-06 - **Last Updated**: 2021-05-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Tornado ## tornado.web.Application ### 路由映射([来源][1]) 构建路由映射列表时,可以有以下三种方式: * `(r"/", IndexHandler)` * `(r"/home", HomeHandler, {"homeName":"byl"})` * `url(r"/about", AboutHandler, name="aboutPage")` 第一种是二元元组,仅仅将路径和`RequestHandler`绑定在了一起,没有涉及参数传递。 第二种方式中的字典,会作为参数传入到对应的`RequestHandler`的`initialize()`方法中,之后需要在该方法中赋值,即: ```python from tornado.web import RequestHandler class HomeHandler(RequestHandler): def initialize(self, homeName): self.homeName = homeName def get(self): self.write(self.homeName) ``` 第三种方式中的`name`属性表示该`url`对象的名称。可以通过`RequestHandler.reverse_url(name)`获取对应的`url` ```python from tornado.web import RequestHandler class AboutHandler(RequestHandler): def get(self): self.write(AboutHandler. reverse_url(self, name='aboutPage')) ``` > 输出 /about ## tornado.web.RequestHandler 利用HTTP协议向服务器传参有以下**四**种途径,和其对应的接收方式: 1. Payload方式 2. FormData方式 3. Query String Parameters方式 4. URL方式 Payload方式一般指利用JSON或其他格式的文件传输数据;FormData即表单数据;第三种是解析URL中的参数数据;第四种是直接解析URL。 **第三种和第四种的区别是**:第三种解析的URL地址为`www.baidu.com?id=123`;第四种解析的URL地址为`www.baidu.com/news/2021` ### Payload与FormData方式 > RequestHandler.get_body_argument(name: str, default: None, strip: bool = 'True') → Optional[str] 从请求正文返回具有给定名称的参数值。如果不提供默认值,则认为需要参数,如果没有找到,会触发`MissingArgumentError`错误。**如果参数在请求中出现多次,则返回最后一个值。** > RequestHandler.get_body_arguments(name: str, strip: bool = True) → List[str] 从请求正文返回具有给定名称的参数列表如果参数不存在,则返回空列表。 ### Query String Parameters方式 > RequestHandler.get_query_argument(name: str, default: None, strip: bool = 'True') → Optional[str] 从请求查询字符串返回具有给定名称的参数值。如果不提供默认值,则认为需要参数,如果没有找到,会触发`MissingArgumentError`错误。**如果参数在请求中出现多次,则返回最后一个值。** > RequestHandler.get_query_arguments(name: str, strip: bool = True) → List[str] 返回具有给定名称的参数列表如果参数不存在,则返回空列表。 一种通用的方式是以下命令: >RequestHandler.get_argument(name: str, default: None, strip: bool = 'True') → Optional[str] >RequestHandler.get_arguments(name: str, strip: bool = True) → List[str] ### URL方式 通过URL传递参数可以使用正则表达式进行解析。 ### 自行解析 ```python import json def prepare(self): if self.request.headers['Content-Type'] == 'application/x-json': self.args = json.decode(self.request.body) # Access self.args directly instead of using self.get_argument. ``` [1]: https://www.cnblogs.com/cnxkey/articles/10132063.html