flask知识点
1.app.route()中的参数
app.route(rule, methods=请求类型, endpoint=给路由起别名)
2. endpoint使用
from flask import url_for url_for(‘给路由起的别名’)
如果没有设置endpoint,则默认是rule,如:’/index’ url_for(‘index’)
3.request对象
from flask import request
1)request.method:查看浏览器的请求方式【GET/POST】
2)request.args.get():获取GET请求传递的参数
request.form.get():获取POST请求传递的参数
4.session对象
from flask import session
注:创建session要在配置文件设置SECRET_KEY。session是一个类字典对象,字典有的方法session都有
① 设置session:session[ ] = xxx
② 从session中取值:session.get()
③ 删除session:del session[ ]
5.路由重定向
from flask import redirect
redirect(‘路由’)
6.视图函数接受路由的传参
路由传参规则:
@app.route(’/user/<username>’) 默认传递字符串
@app.route(’/post/<int:post_id>’) 传递int
@app.route(’/post/<float:post_id>’) 传递float
@app.route(’/post/<path:path>’) 传递一个路径
7.使用redis存储session
pip install flask-session
① 在配置文件settings.py中添加
PERMANENT_SESSION_LIFETIME = timedelta(minutes=20) # 设置session存到cookie的过期时间
SESSION_TYPE = “redis” # 存储session的类型
SESSION_REDIS = Redis(host=‘x.x.x.x’, port=‘6379’) # session的ip和端口
②在__ini__.py的create_app函数中添加:
from flask_session import Session
# 将session替换成redis session
Session(app)
8.模板宏
8.1 定义不带参数宏
{% macro input() %}
<input type=“text” value="" size=“30”>
{% endmacro%}
调用:{{ input() }}
8.2 定义带参数宏
{% macro input2(type, value, size) %}
<input type="{{type}}" value="{{value}}" size="{{size}}">
{% endmacro %}
调用:{{ input2(“password”, “”, 50) }}
8.3 定义带默认参数宏
{% macro input3(type=“text”, value="", size=30) %}
<input type="{{type}}" value="{{value}}" size="{{size}}">
{% endmacro %}
调用:{{ input3(“password”, “”, 100) }}
8.4 调用外部宏
外部html:
{% macro input4(type=“text”, value="", size=30) %}
<input type="{{type}}" value="{{value}}" size="{{size}}">
{% endmacro %}
当前html 导入:
{% import “外部.html” as 别名 %}
调用:{{ 别名.input4() }}
9.模板的闪现
- 返回之前在Flask中通过 flash() 传入的信息列表。把字符串对象表示的消息加入到一个消息队列中,然后通过调用 get_flashed_messages() 方法取出。
视图.py
@app.route("/")
def index():
if flag:
# 添加闪现信息
flash("hello1")
flash("hello2")
flash("hello3")
global flag
flag = False
return render_template("index.html")
模板.html
{% for message in get_flashed_messages() %}
{{ message }}
{% endfor %}