Flask中钩子函数和Get/Post请求

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_1290259791/article/details/81749243

Get请求

  • 场景:只从服务器获取数据,并没有对服务器产生影响,这时候使用get请求。
  • 传参:get请求是放在url中,并且是通过的形式来指定key和value。

Post请求

  • 场景:对服务器产生影响,使用post请求。
  • 传参:不放在url中,通过from data形式发送给服务器。

Get和Post请求获取参数

  1. get请求是通过flask.requests.args来获取
  2. post请求是通过flask.requests.form来获取
  3. post注意:
    • input标签中,要写name来标识这个valuekey,方便后台获取。
    • 在写form表单要指定mehtod='post',还要制定action='/login/'
<form action="{{ url_for('login') }}" method="post">
    <table>
        <tbody>
            <tr>
                <td>用户名:</td>
                <td><input type="text" placeholder="请输入用户名" name="username"></td>
            </tr>
            <tr>
                <td>用户名:</td>
                <td><input type="text" placeholder="请输入密码" name="password"></td>
            </tr>
            <tr>
                <td></td>
                <td><input type="submit" value="登陆"></td>
            </tr>
        </tbody>
    </table>
</form>
from flask import Flask, render_template, request

app = Flask(__name__)


@app.route('/')
def hello_world():
    return render_template('index.html')


@app.route('/search/', methods=['GET'])
def search():
    q = request.args.get('q')
    return '用户提交查询的参数:%s' % q


@app.route('/login/', methods=['GET', 'POST'])
def login():
    if request.method == 'GET':
        return render_template('login.html')
    else:
        username = request.form.get('username')     # 获取form表单内容
        password = request.form.get('password')
        print(username, password)
        return 'ok'


if __name__ == '__main__':
    app.run(debug=True)

全局变量的g属性

  • g:global
  1. g对象是专门用来保存用户数据的
  2. g对象在一次请求中的所有代码的地方,都是可以使用的

钩子函数(hook)

  1. before_request
# before_request:在请求之前,在(所有)视图函数执行之前执行,这个函数只是一个装饰器。
# 把需要设置钩子函数的代码,放到视图函数之前来执行
@app.before_request
  1. context_processor
    • 上下文处理器应该返回一个字典,字典中的key会被模版当成变量来渲染。
    • 上下文处理器中返回的字典,在所有页面都是可用的
    • 没有数据也要返回空字典{}

猜你喜欢

转载自blog.csdn.net/qq_1290259791/article/details/81749243