Get请求
- 场景:只从服务器获取数据,并没有对服务器产生影响,这时候使用get请求。
- 传参:get请求是放在url中,并且是通过
?
的形式来指定key和value。
Post请求
- 场景:对服务器产生影响,使用post请求。
- 传参:不放在url中,通过
from data
形式发送给服务器。
Get和Post请求获取参数
get
请求是通过flask.requests.args
来获取post
请求是通过flask.requests.form
来获取post
注意:
- 在
input
标签中,要写name来标识这个value
的key
,方便后台获取。 - 在写
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对象是专门用来保存用户数据的
- g对象在一次请求中的所有代码的地方,都是可以使用的
钩子函数(hook)
- before_request
# before_request:在请求之前,在(所有)视图函数执行之前执行,这个函数只是一个装饰器。
# 把需要设置钩子函数的代码,放到视图函数之前来执行
@app.before_request
- context_processor
- 上下文处理器应该返回一个字典,字典中的
key
会被模版当成变量来渲染。 - 上下文处理器中返回的字典,在所有页面都是可用的
- 没有数据也要返回空字典{}