Tornado学习心得-第六期:构造响应
tornado吧
全部回复
仅看楼主
level 5
2025年10月30日 14点10分 1
level 5
最基本的写响应技巧:写入text、json
.
1. 向HTTP响应报文的body写入文本(可调用多次。每次把参数里给出的str追加到body末尾)
.
self.write("Hello")
self.write(" ")
self.write("World")
self.write("!")
.
2. 向HTTP响应报文的body写入JSON数据(只能调用一次)
.
self.finish(data_dict)
2025年10月30日 14点10分 3
self.write既能接收str参数,也能接收dict参数。它接收dict参数时也能把dict进行JSON序列化,设置输出响应为JSON响应
2025年10月30日 15点10分
self.finish也是既能接收str参数,也能接收dict参数。且接收dict参数是也是生成JSON响应。但self.finish保证本次写入是最后一次对响应内容的写入
2025年10月30日 15点10分
level 5
[阴险][阴险][阴险]
2025年10月30日 14点10分 4
level 5
渲染html模板文件作为响应内容
.
1. 读取html模板文件的内容作为响应
.
self.render('index.html')
.
2. 读取html模板文件,并把给定的数据替换掉模板文件中的占位变量
.
data = {
  "title": "Orders Dashboard",
  "table_rows": table_rows,
}
self.render("dashboard.html", **data)
2025年10月30日 15点10分 5
data是以占位变量名作为key,占位变量实际取值作为value的字典。
2025年10月30日 15点10分
其实self.render函数除了第一个参数是template_filename之外,剩下的参数是不定参数,这些不定参数一律被self.render视作需要渲染到模板文件中的变量名和变量值
2025年10月30日 15点10分
level 5
[钱币][钱币][钱币]
2025年10月30日 15点10分 6
level 5
最基本的写响应技巧:写入text、json
.
1. 向HTTP响应报文的body写入文本(可调用多次。每次把参数里给出的str追加到body末尾)
.
self.write("Hello")
self.write(" ")
self.write("World")
self.write("!")
.
2. 向HTTP响应报文的body写入JSON数据(只能调用一次)
.
self.write(data_dict)
.
.
.
总结:
1. 其实self.write、self.finish都能接收str、dict类型的参数,且接收str类型参数时都是把str追加到响应body末尾,接收dict类型参数时都是把dict进行JSON序列化后作为JSON响应输出(会自动把Content-Type设置为application/json)
2. self.finish还有一层额外的意思:这是最后一次修改响应body类,之后不再修改了,自此之后可以把body发送给客户端了
2025年10月30日 15点10分 7
level 5
渲染html模板字符串作为响应内容
.
1. 以指定html模板字符串作为响应
.
self.render_string('<p>Hello World!!!</p>')
.
2. 以指定html模板字符串作为响应内容,并把给定的数据替换掉模板文件中的占位变量
.
data = {
  "title": "Orders Dashboard",
  "table_rows": table_rows,
}
self.render_string('<p>{{ title }}{% for row in table_rows%}{{ row.name }}{% endfor %}</p>', **data)
2025年10月30日 15点10分 8
level 5
写接口时大多数情况都是返回JSON响应,这个需求用self.write就能覆盖
.
对于返回HTML响应的需求,用self.render就能覆盖
.
所以懂得self.write、self.render就能应付日常工作的基本需求了
2025年10月30日 15点10分 9
level 5
[酷][酷][酷]
2025年10月30日 15点10分 10
level 5
总结:
.
1. 写入text、json:self.write、self.finish
2. 渲染html模板文件:self.render
3. 渲染html模板字符串:self.render_string
2025年10月30日 16点10分 11
level 5
结帖咯
2025年10月30日 16点10分 12
1