前提

交互操作

一、接收客户端的参数

from flask import Flask
app = Flask(__name__)

@app.route('/<name>')
def hello(name):
    return f'hello, {name}'

请求URL: http://127.0.0.1:5000/rikka
返回结果: hello, rikka

注:
默认情况下, Flask 获取的变量类型是 String ,上面的实例实际上是 <string:name>Flask 还可以接收以下的类型:
<int:xxx>
<float:xxx>
<path:xxx> 包含下划线的 字符串路径 类型
<uuid:xxx> UUID类型

二、HTTP 的请求方法

@app.route('/login', methods=['POST'])

@app.route('/login', method=['POST', 'GET'])

三、接收表单参数

通过 request 来获取表单传来的参数

app.route('/login', methods=['POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']

通过 request.method 获取到HTTP的请求方法
通过 request.form 获取前端传来的表单数据

request.cookies.get('xxx')  # 获取cookies
request.files['file']  # 获取上传的文件

四、模板引擎渲染

在项目中新建一个 templates 文件夹,用于存放模板文件。在里面新建一个模板文件 index.html

mkdir templates
cd templates
vim index.html
<title>标题</title>
<h1>你好啊, {{ name }}</h1>
from flask import render_template

@app.route('/hi/<name>')
def hello(name):
    return render_template('index.html', name=name)

通过 render_template 将变量传递给 index.html

五、404响应

当用户访问不存在的业务时,会得到一个404的响应。可以通过 errorhandler 拦截并定义自己的404响应。

@app.errorhandler(404)
def page_not_found(error):
    return '你查找的页面不存在', 404

其它响应错误码或异常都可以通过 errorhandler 拦截并自定义。

六、页面重定向

@app.route('/baike')
def baike():
    return redirect('http://www.baidu.com')

@app.route('/search')
def search():
    return redirect(url_for('/login'))  # 重定向至我的 login 路由中去

七、响应对象的获取

通过 make_response() 方法可以获取到响应对象。

@app.route('/login')
def login():
    resp = make_response(render_template('fxxk.html'))
    resp.headers['name'] = 'lucy'
    return resp

通过URL请求可以查到,该请求的 回复头 中含有 name 的参数。

八、响应API

from flask import Flask
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False  # 防止中文乱码

message = {"message": "ok", "data": [{"name": "lucy", age: 20}]}

@app.route('/info')
def info():
    return jsonify({'message': message})

九、session会话

通过 Flasksession 对象可以存储到用户的一些特定信息,比如我们可以对已经登录的用户做一些数据标识或存储,避免用户每次访问服务都需要登录。

session['username'] = request.form['username']  # 使用 session 保存用户信息

if 'lucy' in session:
    pass  # 已经登录,可以直接访问

session.pop('username')   # 用户退出登录后,在session移除该用户

总结

本文用作了解基本知识,不纳入项目的一部分。

  • 了解了一些 Flask 的常用操作:
    • 请求方式
    • 获取参数
    • 渲染模板
    • 错误拦截、重定向
    • 响应获取
    • API
    • session会话