flask框架-初步了解-app对象的初始化和路由设置
2019-04-01 23:43
666 查看
什么是web框架?
能够被服务器调用起来,根据客户端的不同请求执行不同的逻辑处理形成要返回的数据的 程序
核心:实现路由和视图(业务逻辑处理)
为什么要用web框架?
- 稳定性和可扩展性强
- 可以降低开发难度,提高开发效率。
例如:在某个区需要成立一家医院,web框架相当于把“圈地,打地基,盖楼,装修,入驻”这些事情都干了,我们只需要挂号,看病即使用医院即使用web框架
flask框架使用过程
- 所有Flask程序都必须创建一个程序实例。
- 当客户端想要获取资源时,一般会通过浏览器发起HTTP请求。
- 此时,Web服务器使用一种名为WEB服务器网关接口的WSGI(Web Server Gateway Interface)协议,把来自客户端的请求都交给Flask程序实例。
- Flask使用Werkzeug来做路由分发(URL请求和视图函数之间的对应关系)。根据每个URL请求,找到具体的视图函数。
- 在Flask程序中,路由一般是通过程序实例的装饰器实现。通过调用视图函数,获取到数据后,把数据传入HTML模板文件中,模板引擎负责渲染HTTP响应数据,然后由Flask返回响应数据给浏览器,最后浏览器显示返回的结果。
flask的第一个程序hello world
[code]# 我是用的是flask==0.10.1,对python3不太友好 # coding:utf-8 # 导入Flask类 from flask import Flask #Flask类接收一个参数__name__ app = Flask(__name__) # 创建一个app对象,__name__表示当前模块名,只要模块不是被导入的,默认都是__main__ # 装饰器的作用是将路由映射到视图函数index @app.route('/') def index(): return 'Hello World' # Flask应用程序实例的run方法启动WEB服务器 if __name__ == '__main__': app.run()flask程序加载和读取配置
在 Flask 程序运行的时候,可以给 Flask 设置相关配置,比如:配置 Debug 模式,配置数据库连接地址等等,设置 Flask 配置有以下三种方式:
1.配置加载文件
[code]app.config.from_pyfile("config.cfg")2.使用对象配置参数
[code]class Config(object): DEBUG = True app.config.from.object(Config)3.直接操作config的字典对象
[code]app.config['DEBUG'] = True4.在app.run()里加入配置条件
[code]app.run('DEBUG'=True)读取配置目前只会两种方式:
1.直接从全局对象app的config字典中取值
print (app.config.get("WEISHAO"))
2.从current_app读取,它是个全局代理人current_app.get('DEBUG')
app.run()的参数
- 可以指定运行的主机IP地址,端口,是否开启调试模式
app.run(host='0.0.0.0',port=5000,DEBUG=True)
host='0.0.0.0'意思是任何ip都可以访问
flask路由
明确路由定义的参数,请求方式指定
app.url_map 查看所有路由
[code] print(app.url_map)
同一路由装饰多个视图函数
[code]@app.count("/",method=['POST']) def index() return "index" @app.count("/",method=['GET']) def index2() return "index2"同一视图多个路由装饰器
[code]@app.route("/") @app.route("/index") def index(): return "index"利用methods限制访问方式
@app.route('/sample', methods=['GET', 'POST'])
使用url_for进行反解析
[code]@app.route("/haha") def haha(): url = url_for("index2")# 反向解析获取index2视图函数 return redirect(url)动态路由
[code]# 转换器int:good_id # 127.0.0.1:5000/goods/123 # @app.route("/goods/<int:goods_id>")# goods_id指向了从浏览器获取的/goods/后面的参数 @app.route("/goods/<int:goods_id>")# 不加转换器类型,默认是字符串规则,除了/以外 def goods(goods_id): print(app.url_map) return "goods info %s"%goods_id自定义转换器
[code]# 定义万能转换器 class AllConverter(BaseConverter): '''必须继承BaseConverter''' def __init__(self, url_map, regex): # 调用父类的init方法 super(AllConverter, self).__init__(url_map) self.regex = regex # 将万能转换器添加到flask应用中 app.url_map.converters["all"] = AllConverter @app.route("/all_show/<all(r'\d{+}'):num>") def all_show(num): return "这是一个万能转换器的展示,%d"%num我这个自定义转换器错了,求各位兄弟教导
相关文章推荐
- 三十二、python学习之Flask框架(四)模板:jinja2模板、过滤器、模板复用(继承、宏、包含)、了解CSRF跨站请求攻击
- PHP开发框架kohana3 自定义路由设置示例
- python flask框架 app.debug=True时,启动脚本被执行了2次
- Laravel框架路由配置总结、设置技巧大全
- Flask 框架app = Flask(__name__) 解析
- Flask 框架app = Flask(__name__) 解析
- Angular 2 + 折腾记 :(4)初步了解路由及使用
- web框架-flask方式添加路由
- Flask框架(flask中设置和获取session)
- Cocoa 框架 For iOS(二)对象的分配初始化、内省、单例
- Laravel框架路由设置与使用示例
- 监听耳机插拔设置语音播放重定向 & WebRTC & 音频播放路由初始化
- Cocoa 框架 For iOS(二)对象的分配初始化、内省、单
- (5)Java面向对象之初步了解
- 33-路由设置对象
- dotweb框架之旅 [二] - 常用对象-App(dotweb)
- Golang Web 框架 Beego 路由设置 - 03
- Hybird HTML5 App(移动应用开发)之:了解Ionic框架
- $this->redirect ,Yii::app()->createUrl的路由设置
- python flask框架 app.debug=True时,启动脚本被执行了2次