视图函数和普通函数的区别,resopnse的使用

视图函数和普通函数的区别

在下面的代码里其实是看不出来什么区别的,但是实际上视图函数的return,Flask框架会对其进行一个封装

 

视图函数不只单单会返回一个字符串,还会返回一些状态码(status code)比如 200, 404 ,301;

还会返回content-type http headers属性

content-type:告诉http请求的接收方,    就比如说我们请求的是浏览器那就是告诉浏览器这个接收方如何解析我们要返回的这个内容

视图函数返回的都是一个文本如果要解析这个文本的话就要告诉浏览器如何解析这个文本内容

如果需要解析什么格式就把值换成什么格式

 

 headers = {
        'content-type':'text/plain'
    }

当你在视图函数里面返回了一个内容,Flask会自动吧这个内容当成一个相应的主体内容然后自动封装成一个对象就叫做Response

 

 

Flask提供了一个很方便的函数make_response来创建response函数,在flask后面导入make_response就可以了

因为我们返回的是html所以下面设置headers 告诉浏览器我们设置的是一个普通的字符串,把他当成一个普通的字符串返回

 

 

@app.route('/')
def fisher():
    headers = {
        'content-type':'text/plain'
    }
    response = make_response('<html></html>',404)
    response.headers = headers

 

 

 

虽然我们设置了404状态码但是在浏览器还是正常显示,所以即使你设置了状态码,也不会影响你的正常输出

 

 

 

 

 

 

  

 

 

重定向就是网络请求被重新定个方向转到了其它位置

这里用到了重定向location定义一个地址,运行就会跳转到我们所定义的地址而不是像上面一样显示html文本了(状态码不修改是无法跳转的)

@app.route('/')
def fisher():
    headers = {
        'content-type':'text/plain',
        'location':'https://www.taobao.com/'
    }
    response = make_response('<html></html>',301)
    response.headers = headers
    return response

 

 

 

 

 

还有一种更简单的返回Response对象的方式.不要去单独创建对象然后返回,我们用,号隔开,它就变成了一个元组,当你返回一个元组的时候flask内部会把变成一个Response

return '<html></html>',301, headers

  

 

posted @ 2021-11-16 11:11  沐公子  阅读(144)  评论(0)    收藏  举报