flask插件
flask-script 是三方提供的flask项目,交互式插件,可以使用flask-script管理安装项目命令
安装flask-script
pip install flask-script
配置pycharm启动
会话
不使用cookie的登录注册
#密码加密
import hashlib
def set_password(password):
md5 = hashlib.md5()
md5.update(password.encode())
result = md5.hexdigest()
return result
#登录
@app.route("/login/,methods=["get","post"]")
def login():
error = ""
if request.method == "POST":
email = request.form.get("email")
password = request.form.get("password")
if email and password:
user = User.query.filter_by(email=email,password=set_password()password).first()
if user is not None:
return redirect("index")
else:
error = "邮箱或者密码错误"
else:
error = "参数不能为空"
return render_template("login.html",error=error)
#注册
@app.route("/register/",methods=["post","get"])
def register():
error = ""
if request.method == "POST":
email = request.form.get("email")
password = request.from.get("password")
if email and password:
user = User.query.filter(User.email==email).first()
if user:
error="邮箱已存在"
else:
user = User()
user.email = email
user.password = set_password(password)
user.save()
return redirect("/login/")
else:
error = "参数不能为空"
return render_template("register.html",error=error)
COOKIE
设置cookie
获取cookie
cookie = request.cookies.get("user_id")
print(cookie)
删除cookie
@app.route("/logout/,methods = ["get","post"])
def logout():
rep = redirect("/login/")
rep.delete_cookie("email")
rep.delete_cookie("user_id")
return rep
登录装饰器
def LoginValid(func):
@functools.wraps(func) ##保留原来的函数名字
def inner(*args,**kwargs):
user_id = request.cookies.get("user_id")
email = request.cookies.get("email")
if user_id and email:
user = User.query.filter(User.email == email,user.id==user_id).first()
if user:
return func(*args,**kwargs)
else:
return redirect("/login/")
else:
return redirect("/login/")
return inner
flask 中是由装饰器写路由,登录装饰器涉及到两个装饰器的使用
装饰器的顺序
装饰器返回函数的名字
装饰器
SESSION
flask使用session session默认存在内存中的,需要使用插件才能够存储在数据库中,
django中settings.py 中有 secetkey session_id session内容
flask中没有,需要配置
第一种
第二种:
设置session
from flask import session
session["key"] = 'value'
获取session
删除session
两种方法
会话机制
-
Cookie
-
优点:成本低,能够解决浏览器访问无状态的问题
-
缺点:安全性低,cookie 下发到用户,放在用户本地
-
-
session
-
优点:解决了cookie安全性的问题,
-
缺点:成本高,需要放在服务器上面,通常放在数据库中,flask放在内存中
-
flask请求
通常web服务请求:
-
form表单
-
url get请求
-
ajax
-
爬虫
django中:
-
request 请求对象 视图中的形参
-
request.POST
-
request.GET
-
request.COOKIES
-
request.META
-
request.body
Flask中 from flask import request
-
request.form 获取post请求的 从表单请求中获取
-
request.args 从url中获取
-
request.cookies cookie
-
request.files 请求携带的文件
-
request.method 请求的方式
-
request.url 请求的路由
-
request.headers 请求的头