1、简介
(1)get请求:
- 使用场景:如果只对服务器获取数据,并没有对服务器产生任何影响,那么这时候使用
get
请求。 - 传参:
get
请求传参是放在url中的,并且是通过?
的形式来指定key
和value
。
(2)post请求:
- 使用场景,如果要对服务器产生影响,那么使用
post
请求。 - 传参:
post
请求传参不是放在url
中的,是通过from data
的形式发送给服务器的。
2、post和get请求获取参数:
(1) get请求是通过flask.request.args
来获取的。
(2) post请求是通过flask.request.form
来获取的。
(3) post请求在模板中要注意几点:
- input标签中,要指定
name
来标识这个value
和key
,方便后台获取。 - 在写from表单的时候,要指定
method='post'
,并且要指定action='/login/'
。
3、保存全局变量的g属性
- g:global
- g对象是专门用来保存数据的
- g对象在 一次请求中 的所有的代码的地方,都是可以使用的。
4、示例代码
# 主app文件:gp_demo.py
from flask import Flask, render_template, request,g
import utils
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/search/')
def search():
g.search_key = request.args.get('search_key') # 获取get请求传递过来的search_key参数
return render_template('search_results.html',results='search success!要查询的关键字是:' + g.search_key)
@app.route('/login/', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template('login.html')
else:
# 获取前台在文本框输入的username和password,这两个数据是post方式提交的。
g.username = request.form.get('username')
g.password = request.form.get('password')
if utils.login_check(): # 调用utils这个文件里的login_check这个函数,
return '登陆成功!你好:' + g.username
else:
return '登陆失败!'
if __name__ == '__main__':
app.run()
# utils.py
from flask import g
def login_check():
if g.username == 'nnn' and g.password == 'ppp':
return True
else:
return False
{# login.html #}
<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="password" placeholder="请输入密码:" name="password"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="提交"></td>
</tr>
</tbody>
</table>
</form>
注: 其中<form action="{{ url_for('login') }}" method="post">
里的action值是指定将该form
以post
方式提交给login
视图函数。若不写method="post"
,则默认是get
方式
{# index.html #}
<form action="{{ url_for('search') }}">
<table>
<tbody>
<tr>
<td>筛选:</td>
<td><input type="text" placeholder="请输入搜索关键字:" name="search_key"></td>
<td><input type="submit" value="搜索"></td>
</tr>
</tbody>
</table>
</form>
以上笔记整理自知了课堂黄勇老师讲解的教学视频《Flask框架入门到实战开发》的第五章第1-3小结的内容,不足之处,望不吝赐教!