欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python web框架 Flask(一)

程序员文章站 2022-07-02 18:51:24
...

flask初识

一个轻量级web框架
  • 实例化flask的app对象
    from flask imort Flask
from flask import Flask, make_response
app = Flask(__name__)
  • flask读取config配置文件(就是一个大字典)
app.config.from_object('config')  # app内置的导入config配置文件,参数全部大写
print(app.config['DEBUG'])  # config中设置Debug找不到,必须全大写;DEBUG在flask中默认为False

flask视图函数的return
# 路由注册一:装饰器,其实内部也是基于add_url_rule实现url路由
@app.route('/hello/')  # 路由/hello/兼容两种访问/hello/和/hello
def hello():
    # 基于类的视图(即插试图)
    headers = {
        'content-type': 'text/plain',
        'location': 'http://www.bing.com'
    }
    # response = make_response('<html></html>', 301)
    # response.headers = headers
    # return response
    return '<html></html>', 301, headers
    # return 'hello wang'
flask的两种路由注册方式
  • 装饰器@app.route(’/hello/’),内部是基于add_url_rule()方法
# 路由注册一:装饰器,其实内部也是基于add_url_rule实现url路由
@app.route('/hello/')  # 路由/hello/兼容两种访问/hello/和/hello
def hello():
	return 'hello wang'
  • add_url_rule(’/hello/’, view_func=hello)
# 路由注册二:add_url_rule的路由函数
app.add_url_rule('/hello', view_func=hello)

flask的启动入口
if __name__ = '__main__':

只有在本文件才会执行该语句下的内容,作为模块导入其它函数if name = ‘main’:下的语句不执行。项目部署到生产环境下不会使用if name = ‘main’:下的flask自己的服务器,而是使用nginx+uwsgi,nginx是前置服务器,接收浏览器发来的请求,uwsgi加载fisher.py模块,而不是把fisher.py作为入口,不执行if name = ‘main’:下的flask服务器

if __name__ == '__main__':
    # 部署到生产环境不使用flask自带的服务器;
    # 使用nginx前置服务器,接收浏览器法来的请求
    # 转发请求给uwsgi,uwsgi加载fisher.py模块,不作为入口文件,不执行__name__下服务器
    # 启动方法:调试模式debug不能通过本机ip地址访问,0.0.0.0接受外网访问,支持多个ip地址
    # 可以指定端口port
    # debug模式会把信息显示在网页上,堆栈信息
    app.run(host='0.0.0.0', debug=app.config['DEBUG'])

相关标签: python flask