Flask’s some definitions
- WSGI: Web服务器网关接口,是一种Web服务使用的协议
- 路由: 处理URL和函数之间关系的程序称为”路由”
- 视图函数: 类似于index()这样的,被app.route装饰器注册为路由的函数,或者通过app.add_url_rule()添加路由映射关系的函数,被称为视图函数。
- app.route(): 路由装饰器,可以带参数,参数可以指定数据类型:int/float/path。path类似于字符串,但不将反斜线/当做分隔符。
Flask上下文全局变量
- current_app: 程序上下文,当前激活程序的程序实例,所有线程公用一个该实例。
- g: 程序上下文,处理请求时用作临时存储的对象,每次请求都会重设这个变量
- request: 请求上下文,请求对象,封装了客户端发出的 HTTP 请求中的内容,不同线程之间互不干扰
- session: 请求上下问,用户会话,用于存储请求之间需要“记住”的值的词典。
Flask支持的4种钩子函数
- before_first_request: 注册一个函数,在处理第一个请求之前运行。
- before_request: 注册一个函数,在每次请求之前运行。
- after_request: 注册一个函数,如果没有未处理的异常抛出,在每次请求之后运行。
- teardown_request:注册一个函数,即使有未处理的异常抛出,也在每次请求之后运行。
Jinja2模板使用
渲染模板: render_template(“user.html”, name=name)
控制结构:1
2
3
4
5
6
7
8
9
10
11{% if user %}
Hello, {{ user }}!
{% else %}
Hello, Stranger!
{% endif %}
<ul>
{% for comment in comments %}
<li>{{ comment }}</li>
{% endfor %}
</ul>
宏-类似于函数:1
2
3
4
5
6
7
8
9 {% macro render_comment(comment) %}
<li>{{ comment }}</li>
{% endmacro %}
<ul>
{% for comment in comments %}
{{ render_comment(comment) }}
{% endfor %}
</ul>
Jinja2变量过滤器
# safe: 渲染值时不转义
# capitalize: 把值的首字母转换成大写,其他字母转换成小写
# lower: 把值转换成小写形式
# upper: 把值转换成大写形式
# title: 把值中每个单词的首字母都转换成大写
# trim: 把值的首尾空格去掉
# striptags: 渲染之前把值中所有的 HTML 标签都删掉
WTForms支持的字段
注意添加app.config[‘SECRET_KEY’] = ‘hard to guess string’
- StringField 文本字段
- TextAreaField 多行文本字段
- PasswordField 密码文本字段
- HiddenField 隐藏文本字段
- DateField 值为datatime.data格式的文本字段
- DateTimeField 值为datatime.datatime格式的文本字段
- DecimalField 值为decimal.Decimal格式的文本字段
- IntegerField 值为整数的文本字段
- FloatField 值为浮点数的文本字段
- BooleanField 值为True或False的复选框
- RadioField 一组单选框
- SelectField 值唯一的下拉列表
- SelectMultipleField 可选多个值得下拉列表
- FileField 文件上传字段
- SubmitField 表单提交按钮
- FormField 把表单作为字段嵌入另一个表单
- FieldList 一组指定类型的字段
常见返回码
200 OK - [GET]:服务器成功返回用户请求的数据
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功
202 Accepted - []:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - [DELETE]:用户删除数据成功
400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作
401 Unauthorized - []:表示用户没有权限(令牌、用户名、密码错误)
403 Forbidden - [] 表示用户得到授权(与401错误相对),但是访问是被禁止的
404 NOT FOUND - []:用户发出的请求针对的是不存在的记录,服务器没有进行操作
406 Not Acceptable - [GET]:用户请求的格式不可得
410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的
422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误
500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功