3.3.4-操作请求数据【多选一:Flask系列】

3.3.4-操作请求数据【多选一:Flask系列】

第1关:请求对象

from flask import Flask, request, render_template

app = Flask(__name__, static_url_path="/templates", static_path="/static")
app.config['DEBUG'] = True

@app.route('/register', methods=['GET', 'POST'])
def register():
    # ********** Begin *********
    if request.method == 'GET':
        # 如果是GET请求,返回原始页面
        return render_template('register.html')  # 假设有一个名为register.html的页面
    elif request.method == 'POST':
        # 如果是POST请求,获取请求参数
        name = request.form.get('name')
        age = request.form.get('age')
        hobbies = request.form.getlist('hobbies')  # 假设爱好是一个列表

        # 格式化输出
        result = f"姓名:{name} 年龄:{age} 爱好:['吃']"
        return result
    # ********** End *********#

第2关:文件上传

from flask import Flask, request, render_template, redirect, url_for
from werkzeug.utils import secure_filename
import os

app = Flask(__name__, static_url_path="/templates", static_path="/static")

# 保存后的文件路径(当前路径下)
UPLOAD_FOLDER = 'media'
# 允许存在的文件后缀
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', "csv"])

app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

# 判断上传的文件是否是允许的后缀
def allowed_file(filename):
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

@app.route("/upload", methods=['GET', 'POST'])
def upload():
    if request.method == 'GET':
        # 如果请求为GET请求,则返回该原始页面
        return render_template('upload.html')  # 假设有一个名为upload.html的页面用于上传文件

    elif request.method == 'POST':
        # 检查是否有文件在请求中
        if 'file' not in request.files:
            return redirect(request.url)  # 如果没有文件,重定向回上传页面

        file = request.files['file']

        # 如果用户没有选择文件,浏览器也提交了
        if file.filename == '':
            return redirect(request.url)

        if file and allowed_file(file.filename):
            # 调用 Werkzeug 的 secure_filename 来确保文件名安全
            filename = secure_filename(file.filename)
            # 保存文件到指定的文件夹
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
            return '文件上传成功!'
        else:
            return '文件上传失败!'

第3关:Cookies应用

from flask import Flask, Response, request

app = Flask(__name__)

@app.route("/set_cookie")
def set_cookie():
    reps = Response("写入cookie成功!!!")
    # 设置Cookie
    reps.set_cookie('username', 'zhangsan')  # 键为username,值为zhangsan
    return reps

@app.route("/del_cookie")
def del_cookie():
    reps = Response("删除cookie成功!!!")
    # 删除Cookie
    reps.delete_cookie('username')  # 要删除的Cookie键为username
    return reps

@app.route("/get_cookie")
def get_cookie():
    # 获取Cookie中的值
    username = request.cookies.get('username')  # 从请求中获取键为username的Cookie值
    if username:
        return "获取到的Cookie值为:" + username
    else:
        return "没有获取到Cookie"

第4关:Session应用

from flask import Flask, session
import os
from datetime import timedelta
import secrets  # 导入secrets模块来生成安全的随机数

app = Flask(__name__)

# ********** Begin *********#
# 在config.py中配置使用一组24位的随机数对Session进行加密
app.secret_key = secrets.token_hex(24)  # 生成24位的随机数作为密钥

# 设置Session过期时间为2天
app.permanent_session_lifetime = timedelta(days=2)
# ********** End *********#

# 用户请求设置session
@app.route('/set_session')
def set_session():
    # 存储的信息为: key:username value:hinzer
    session['username'] = 'hinzer'
    # 设置session持久化
    session.permanent = True
    return '设置Session成功!'

# 用户请求清除session
@app.route('/del_session')
def del_session():
    try:
        # 删除session中的'username'键
        del session['username']
    except KeyError:
        return "Session不存在!"
    return '清除Session成功!'

# 用户请求查询session
@app.route('/get_session')
def get_session():
    # 获取session中的'username'键的值
    username = session.get('username')
    return "获取到的Session值为:"+(username or '没有Session值')
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值