Flask后端开发(二) - Flask的练习(入门)

建议食用官方文档:Welcome to Flask — Flask Documentation (2.1.x)https://flask.palletsprojects.com/

前言:避免文章篇幅过长,只简单讨论数据传输、Cookies、Session的常见使用方法。

(1)前后端数据交互


①使用form表格

先来看看form表格是如何打包、传输数据的:

  1. 先把form表单里的表单元素的name属性和value属性进行收集。
  2. 按照enctype属性的设置,选择合适的编码方式,对数据进行编码,放在请求头里。
  3. 向服务器发送数据。

form的enctype有如下常见的几种,在这里你可以全部尝试一遍:

  1. application/x-www-form-urlencoded (默认方式)把数据变成key-value格式
  2. multipart/form-data (二进制数据方式)适用于大文本/文件传输(传文件必须用这个)
  3. text/plain(纯文本格式,用+号间隔)

form的method属性应该设置为:method='post'

在app.py同级下建目录templates/login.html,并写入下面代码:

<form enctype='application/x-www-form-urlencoded' method="post">
        <input name="name" placeholder="姓名" />  <br>
        <input name="password" placeholder="密码" />  <br>
        <button type="submit"  > 登录  </button>
</form>

在app.py文件写入代码:

@app.route('/login', methods=['POST', 'GET'])
def login():
    if request.method == "GET":
        # 获取请求原始信息
        print(request.environ)
        # 路由地址 /login
        print(request.path)
        # 获取访问路径
        print(request.url)  # http://127.0.0.1:5000/login
        # 获取URL头,不包含参数 /login
        print(request.base_url)  # http://127.0.0.1:5000/login
        return flask.render_template("login.html")
    if request.method == "POST":
        print("value = ", request.values.to_dict())
        print("args = ", request.args.to_dict())
        print("form = ", request.form.to_dict())
        return "POST OK!"

运行flask run可以测试效果(login页面账号密码都必须填上,否则请求报错)。

②使用url路径传参

路径传参又有两种方式:1.使用问号?后面接key=value&key2=value2的形式; 2.使用flask路由的参数

主要写写第一种的,第二种官方文档有实例。

第一种需要写js代码,在templates目录内创建一个html文件,我的是data.html,并且写入:

<script>
	function get() {
		var value = document.getElementsByName('key')[0].value
		window.location.href = window.location.href + '?key=' + value
		// 获取当前url,并接上参数
	}
</script>
<input type="text" name="key" placeholder="参数" />
<input type="submit" onclick="get()" />

然后在app.py里面写上:

@app.route('/data', methods=['GET'])
def data_page():
    if 'key' in request.args:
        return "find it! : key = " + request.args.get('key')
    return flask.render_template('data.html')

 这是一种简单的传参方法,但是参数长度有限制。普通的浏览器限制url的长度不可以超过2000左右,但是也有的浏览器比较牛逼,支持60000左右(比如火狐)。

所以通过url传参只能传达简单的数据,需要传达其它数据请使用form表格或者其它方式(我也不知道还有啥,可能之后会更新)

③ 使用Ajax动态更新页面

这个也算是数据传输方式了吧,使用GET/POST请求,和form表格差不多。但是感觉这是前端的事情,就不在这写了。(主要是因为我不会

(2)Cookie的练习


情景:当前你在写你个人网站的搜索工具,你想要使用cookies存储用户最近几次搜索记录。

Flask设置cookies有默认的失效时间,当浏览器关闭时cookies就会失效。

cookie不支持存放数组,只能存放字符串key:value,所以使用一个分隔符'|'分割搜索历史。

天有不测之风云,在设置Cookies时,无法显示中文,应该是编码的问题【解决方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值