python视图函数是什么意思_Flask初学者:视图函数

视图函数返回html模板:使用“from flask import render_template”,在函数中传入相对于文件夹“templates”html模板路径名称字符串即可,flask会自动到项目根目录的“templates”文件夹(创建flask项目时,pycharm会自动创建两个空文件夹,其中一个就是“templates”)下寻找对应的html文件;如果需要给html模板传参,则在“render_template”中使用变量名或字典进行传参即可(在python2中,如果涉及中文,需要使用unicode字符串)。如图:

6f1847050664a069f5cc2eb69c2b8108.png

视图函数返回response对象:视图函数返回响应response给浏览器,一般来说只能是字符串和固定格式的元组,当然也可以自定义,但无论是返回哪种数据格式,最终都是被包装成一个response对象返回给浏览器的。返回的是字符串时,其实也是被包装成response对象返回给浏览器的。也可以是一个固定格式的元组:(response, status, headers),即响应体、状态码和头信息的元组,可以只返回一个response,或者两个(response, status),或者全部返回(response, status, headers)。当可以自定义返回的响应体时需要注意以下几点:

response子类:自定义的response子类必须继承自from flask import response(其实就是from werkzeug.wrappers import response)。

response_class:使用app.response_class=myresponse使之生效。

force_type(response, environ=none):当返回的数据类型,既不是字符串,也不是元组时,flask就会调用response的force_type方法来处理,如果不能处理就会返回错误,所以response子类一般是需要重写这个方法来返回一个合法的数据,参数response即为传入的不合法的数据,可以经过处理后返回一个合法的response对象。

1 from flask import flask, response

2

3 app = flask(__name__)

4

5

6 class myresponse(response):

7 """自定义response类"""

8 @classmethod

9 def force_type(cls, response, environ=none):

10 """重写force_type方法,当参数既不是字符串,

11 也不是(response, status, headers)元组时会调用此方法"""

12 if isinstance(response, list):

13 response = response('+'.join(response))

14

15 # 这里需要包装成response对象才能传入父类的force_type中,

16 # 只传字符串会报错

17 return super().force_type(response, environ)

18

19

20 # 指定自定义的response类,使之生效

21 app.response_class = myresponse

22

23

24 @app.route('/listresponse/')

25 def list_response():

26 # 返回一个不合法的数据

27 # 如果没有自定义的response类来处理的话,就会报错

28 return ['python', '36']

29

30

31 if __name__ == '__main__':

32 app.run(debug=true)

希望与广大网友互动??

点此进行留言吧!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值