import bdb
from flask import Blueprint, render_template, jsonify,redirect,url_for,session
from werkzeug.security import generate_password_hash, check_password_hash
from blueprints.forms import RegisterForm,LoginForm
from exts import mail, db
from flask_mail import Message
from flask import request
import string
import random
from models import EmailCaptchaModel
from models import UserModel
# 前缀
bp = Blueprint("auth", __name__, url_prefix="/auth")
@bp.route("/login",methods=['GET','POST'])
def login():
if request.method=='GET':
return render_template("login.html")
else:
form =LoginForm(request.form)
if form.validate():
email = form.email.data
password = form.password.data
user=UserModel.query.filter_by(email=email).first()
if not user:
print("邮箱在数据库不存在!")
return render_template("auth.login")
if check_password_hash(user.password,password):
# cookie:
# cookie中不适合存储大量信息,一般存储登录信息
# flask中的session,是经过加密后存储在cookie中的
session['user_id']=user.id
return redirect("/")
else:
print("密码错误")
return render_template("auth.login")
else:
print(form.errors)
return render_template("auth.login")
@bp.route("/register",methods=['GET','POST'])
def register():
# 验证用户提交验证码是否对应
# 表单验证flask_wft
if request.method=='GET':
return render_template("register.html")
else:
form=RegisterForm(request.form)
if form.validate():
email=form.email.data
username=form.username.data
password=form.password.data
user=UserModel(email=email,username=username,password=generate_password_hash(password))
db.session.add(user)
db.session.commit()
#return redirect("/auth/login")
return redirect(url_for("auth.login"))
else:
print(form.errors)
return redirect(url_for("auth.register"))
@bp.route("/logout")
def logout():
session.clear()
return redirect("/")
@bp.route("/captcha/email")
def get_email_captcha():
# /captcha/email/<email>
# /captcha/email?email=xx@qq.com
email = request.args.get("email")
source = string.digits * 4
captcha = random.sample(source, 4)
captcha = "".join(captcha)
message = Message(subject="验证码", recipients=[email], body=f"验证码为:{captcha}")
mail.send(message)
# memcached存在内存中/redis可同步到内盘
# 数据库存储(速度缓慢)
email_captcha = EmailCaptchaModel(email=email, captcha=captcha)
db.session.add(email_captcha)
db.session.commit()
# restful api
# code:200正常,400异常,错误message:”“,data{}
return jsonify({"code": 200, "message": "", "data": None})
@bp.route("/mail/test")
def mail_test():
message = Message(subject="邮箱测试", recipients=["2633087186@qq.com"], body="测试邮件")
mail.send(message)
return "邮件发送"
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
flaskProject1 (2).zip (46个子文件)
flaskProject1
migrations
README 41B
script.py.mako 494B
alembic.ini 857B
__pycache__
env.cpython-312.pyc 4KB
env.py 3KB
versions
5975b479b32b_.py 2KB
__pycache__
28fb73cd93a8_.cpython-312.pyc 2KB
5975b479b32b_.cpython-312.pyc 3KB
28fb73cd93a8_.py 1KB
app.py 1006B
exts.py 145B
blueprints
__init__.py 8B
auth.py 3KB
__pycache__
auth.cpython-312.pyc 5KB
qa.cpython-312.pyc 4KB
forms.cpython-312.pyc 4KB
__init__.cpython-312.pyc 148B
qa.py 2KB
forms.py 2KB
models.py 2KB
templates
register.html 2KB
public_question.html 1009B
detail.html 2KB
login.html 1KB
base.html 3KB
index.html 1KB
.idea
workspace.xml 14KB
misc.xml 302B
flaskProject1.iml 645B
inspectionProfiles
profiles_settings.xml 174B
modules.xml 285B
.gitignore 184B
decorators.py 298B
__pycache__
app.cpython-312.pyc 2KB
config.cpython-312.pyc 680B
models.cpython-312.pyc 4KB
exts.cpython-312.pyc 281B
decorators.cpython-312.pyc 725B
static
js
register.js 2KB
bootstrap
bootstrap.4.6.min.css 158KB
css
detail.css 748B
index.css 747B
init.css 40B
images
avatar.jpg 31KB
jquery
jquery.3.6.min.js 87KB
config.py 393B
共 46 条
- 1
资源评论
kinggnu_
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 最新的MySQL odbc 32位驱动程序
- 软件开发小组内部加班调休记录表
- onenote for win10
- Python实现AVL树:自平衡二叉搜索树的构建与维护
- Python中的文本分析技术:从特征提取到模型应用
- 基于C++、Qt+mysql实现医院信息管理系统源码+数据库脚本(高分项目)
- 【Unity树干和根系模型】Mountain Forest Trunks and Roots
- 基于QT(C++)+MySQL实现医院信息管理系统源码(98分期末大作业)
- 基于C++的Qt+mysql实现医院信息管理系统源码+数据库脚本(高分项目)
- NOI 全国青少年信息学奥林匹克竞赛(官网)-2024.11.05.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功