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")