【python-flask学习笔记】5.1 get请求和post请求及保存全局变量的g属性

1、简介

(1)get请求:

  • 使用场景:如果只对服务器获取数据,并没有对服务器产生任何影响,那么这时候使用get请求。
  • 传参:get请求传参是放在url中的,并且是通过?的形式来指定keyvalue

(2)post请求:

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

2、post和get请求获取参数:

(1) get请求是通过flask.request.args来获取的。
(2) post请求是通过flask.request.form来获取的。
(3) post请求在模板中要注意几点:

  • input标签中,要指定name来标识这个valuekey,方便后台获取。
  • 在写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值是指定将该formpost方式提交给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小结的内容,不足之处,望不吝赐教!

发布了44 篇原创文章 · 获赞 5 · 访问量 4503

猜你喜欢

转载自blog.csdn.net/ljb0077/article/details/96279292
今日推荐