flask读书笔记
《《Flask Web开发实战:入门、进阶与原理解析》_李辉.pdf》
中文文档: http://docs.jinkan.org/docs/flask/
英文文档: http://flask.pocoo.org/docs/0.11/
http://www.pythondoc.com/
学习flask的一个很好的网站:http://www.pythondoc.com/flask-mega-tutorial/helloworld.html
flask的一个中文网站:http://flask123.sinaapp.com/category/flask-projects/ 里面还介绍了好多基于flask的开源项目
flask sqlAlchemy: http://www.pythondoc.com/flask-sqlalchemy/index.html
http://python.jobbole.com/84003/
https://dormousehole.readthedocs.io/en/latest/
https://flask-cn.readthedocs.io/en/latest/tutorial/
https://www.cnblogs.com/kendrick/p/6237286.html
=======================
self.paser = reqparse.RequestParser()
中文网站:http://docs.jinkan.org/docs/flask/
扩展:http://flask.pocoo.org/extensions/
====================
通过url_map可以查看整个flask中的路由信息 :print(app.url_map)
当装饰器和请求方式完全相同时,那么执行的是第一个,如果装饰器相同但是请求方式不相同,那么它们将是独立的个体
@app.route("/hello") def hello1(): return "hello 1" @app.route("/hello") def hello2(): return "hello 2"
真正运行的是第一个hello
常用的转换器有int/float/path,我们还可以继承BaseConverter 实现自己的转换器,
BaseConverter中两个常用的重载函数有to_python和to_url
1、Flask 支持在路由中使用 int、 float 和 path 类型。path 类型也是字符串,但不把斜线视作分隔符
2、在请求钩子函数和视图函数之间共享数据一般使用上下文全局变量 g。例如, before_request 处理程序可以从数据库中加载已登录用户,并将其保存到 g.user 中。随后调用视
图函数时,视图函数再使用 g.user 获取用户
3、Flask 提供的 render_template 函数把 Jinja2 模板引擎集成到了程序中
4、在当前版本的 hello.py 程序中调用 url_for('index') 得到的结果是 /。调用 url_for('index', _external=True) 返回的则是绝对地
址,在这个示例中是 http://localhost:5000/。
5、使用 url_for() 生成动态地址时,将动态部分作为关键字参数传入。例如, url_for
('user', name='john', _external=True) 的返回结果是 http://localhost:5000/user/john。
6、静态文件:url_for('static', filename='css/styles.css', _external=True)
7、使用重定向作为 POST 请求的响应,而不是使用常规响应。
8、ORM:程序使用的数据库 URL 必须保存到 Flask 配置对象的 SQLALCHEMY_DATABASE_URI 键中。配置对象中还有一个很有用的选项, 即 SQLALCHEMY_COMMIT_ON_TEARDOWN 键,将其设为 True
时,每次请求结束后都会自动提交数据库中的变动。
9、如果数据库表已经存在于数据库中,那么 db.create_all()不会重新创建或者更新这个表。
10、准备把对象写入数据库之前,先要将其添加到会话中;为了把对象写入数据库,我们要调用 commit() 方法提交会话;数据库会话能保证数据库的一致性,
如果你始终把相关改动放在会话中提交,就能避免因部分更新导致的数据库不一致性。
11、若要查看 SQLAlchemy 为查询生成的原生 SQL 查询语句,只需把 query 对象转换成字
符串:str(User.query.filter_by(role=user_role))
12、 flask db init ; flask db migrate -m “add note timestamp” ; flask db upgrade
======蓝本
13、在蓝本中定义的路由处于休眠状态, 直到蓝本注册到程序上后,路由才真正成为程序的一部分
14、在蓝本中编写错误处理程序稍有不同,如果使用 errorhandler 修饰器,那么只有蓝本中的
错误才能触发处理程序。要想注册程序全局的错误处理程序,必须使用 app_errorhandler
15、视图函数 index() 注册的端点名是 main.index,其 URL 使用 url_for('main.index') 获取。