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'])
推荐阅读
-
Web前端框架bootstrap实战【第一次接触使用】
-
使用Python的Tornado框架实现一个一对一聊天的程序
-
使用Python的web.py框架实现类似Django的ORM查询的教程
-
在Python的Flask中使用WTForms表单框架的基础教程
-
Python 搭建Web站点之Web服务器与Web框架
-
Python的Flask框架标配模板引擎Jinja2的使用教程
-
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
-
浅析Python的web.py框架中url的设定方法
-
深度定制Python的Flask框架开发环境的一些技巧总结
-
使用Python的Tornado框架实现一个Web端图书展示页面