Flask中cookie和session的使用

flask中的cookie使用和Django没有什么不同,大致一样,这里就不过多的验证了,直接看代码,懂django的应该直接看的明白

但是session虽然设置方法也是同字典方法一样,但是flask应用必须配置SECRET_KEY
并在视图路由中导入程序入口处的session,不能直接导入flask中的session使用,否则报错

这里结合注册登录功能来进行测试
views.py
新建用户模型
在这里插入图片描述
找到config.py
全局配置文件中添加SECRET_KEY=""

SECRET_KEY=""

在这里插入图片描述
main.py
导入session,加载配置
在这里插入图片描述
最后视图views.py
导入main.py中的session,设置session
在这里插入图片描述

验证:

在这里插入图片描述

注册登录视图代码:

"""
视图和路由文件
"""
import hashlib
from flask import request
from flask import redirect

from flask import render_template
from FlaskStudent.main import app
from FlaskStudent.models import *
from FlaskStudent.main import session

def SetPassword(password):
    md5 = hashlib.md5()
    md5.update(password.encode())
    return md5.hexdigest()

@app.route("/register/",methods=["GET","POST"])
def register():
    if request.method == 'POST':
        form_data = request.form
        username = form_data.get("username")
        password = form_data.get("password")
        identity = form_data.get("identity")

        user = User()
        user.username = username
        user.password = SetPassword(password)
        user.identity = int(identity)
        user.save()

        return redirect('/login/')
    return render_template("register.html")

@app.route("/login/",methods=["GET","POST"])
def login():
    if request.method == "POST":
        form_data = request.form
        username = form_data.get("username")
        password = form_data.get("password")

        user = User.query.filter_by(username=username).first()
        if user:
            db_password = user.password
            md5_password = SetPassword(password)
            if md5_password == db_password:
                # 验证成功,跳转首页
                response = redirect('/index/')
                # 设置cookie
                response.set_cookie("username",username)
                response.set_cookie("user_id",str(user.id))
                # 设置session
                session["username"] = username
                # 返回跳转页面
                return response
    return render_template("login.html")

@app.route("/index/")
def index():
    return render_template("index.html")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值