flask_flsh_1

调试模式:
app.run(debug=True)进入调试模式,在网页端可看到详细错误信息,不需要重复运行app
路由:
除了在函数上方用装饰器之外@route('/hello'),还可以通过app.add_url_route("/hello",view_func=hello)#hello代表视图函数
一般使用装饰器方法,如果要做基于类的视图的话(即插视图)使用第二种路由。

路由唯一原则:
/hello 和 /hello/的区别在于,如果用户输入错误,也不进行报错,也可使得seo更容易。
/hello/的好处在于,输入两种模式兼不报错,使用了重定向原理。
重定向:
当flask接收到请求之后,返回给前端一个301的location,并返回重定向之后的网址,flask
进行重新访问原值。


指定host和port:
0.0.0.0代表可以被任意网关访问,port指定端口号,默认端口号5000
app.run(host="0.0.0.0",port=81)

配置文件:
为了使得生产环境和开发环境中代码的一致性,则需要写一份配置文件,使得代码一致,并且更改起来容易。

新建一个配置文件config.py,配置文件中的常规来说要大写,可以把其看做一个常量。

DEBUG = True

导入配置文件:
from config import DEBUG
app.config.from_object('config')#需要接收一个模块的路径

使用配置文件:
app.run(debug=app.config['DEBUG'])


为什么用config.from_object('')导入配置文件时不能使用小写,因为flask不认,所以自动忽略了。


真正理解if_name的作用
fi __name__=='__main__':
app.run()
如果在生产环境下,使用的是nginx+uwsgi服务器,uwsgi会自动加载app.py模块,
如果没有if就会再次加载

Respone

在flask中,return会返回很多的数据,比如状态码,200,404,content-type http headers
默认content-type:text/html 会自动处理为html形式
实则是返回一个Response对象。

import flask make_responses

@app.route('/')
def hello():
headers = {
'content-type' = 'text/plain' #普通文本
'location' = 'http://www.bing.com'#重定向

}
response = make_response("<html><html>",301)
response.headers = headers#赋值给response
return response

如果调用API时,需要返回json格式内容,则‘content-type’ = application/json告诉客户端返回json格式的内容。


另一种返回response的方法:
return <html><html>,301,headers
同样可以实现返回response的效果

原文地址:https://www.cnblogs.com/wxzbk/p/10508271.html