from flask import Blueprint, render_template, url_for, request, redirect, jsonify, session, flash
from extions import mail
from flask_mail import Message
import string
import random
from models import EmailCaptchaModel, PersonDataModel
from extions import db
from blueprints.forms import RegisterForm, LoginForm
from models import UserModel
from werkzeug.security import generate_password_hash, check_password_hash
# from decorator import login_required
# blue 访问.../auth/login
bp = Blueprint("auth", __name__, url_prefix="/")
# 程序实例需要知道每个url请求所对应的运行代码是谁。
# 所以程序中必须要创建一个url请求地址到python运行函数的一个映射。
# 处理url和视图函数之间的关系的程序就是"路由",在Flask中,路由是通过@app.route装饰器(以@开头)来表示的
# get获取服务器数据,post上传数据到服务器
# 127.0.0.1:5000
@bp.route('/', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template('login.html')
else:
form = LoginForm(request.form)
if form.validate():
username = form.username.data
password = form.password.data
user = UserModel.query.filter_by(username=username).first()
if not user:
print("用户名不在数据库中")
return redirect(url_for("auth.login"))
if check_password_hash(user.password, password):
# cookie:
session['user_id'] = user.id
return redirect(url_for("auth.index"))
else:
print("密码错误")
return redirect(url_for("auth.login"))
else:
print(form.errors)
flash('用户未注册或密码错误!')
return redirect(url_for("auth.login"))
# get获取服务器数据,post上传数据到服务器
@bp.route("/register", methods=['GET', 'POST'])
def register():
# 验证用户提交的邮箱和验证码是否正确
# 表单验证:flask_wtf:wtforms
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)) # password=generate_password_hash(password)加密
db.session.add(user)
db.session.commit()
print(f'注册信息:用户名:{username}密码:{password}邮箱:{email}')
return redirect(url_for(".login"))
else:
print(f"错误信息{form.errors}")
return redirect(url_for(".register"))
@bp.route("/captcha/email")
def get_email_captcha():
# 路径传参:/captcha/email/<email>
# /captcha/email?email=xxx@qq.com
username = request.args.get("username")
print(username)
email = request.args.get("email")
print(email)
# 验证码4/6位,随机,字母,数字
source = string.digits * 4 # digits = '0123456789'
captcha = random.sample(source, 4) # ['2', '6', '8', '9']
captcha = "".join(captcha) # 2689
message = Message(subject="验证码", recipients=[email], body=f"你的验证码是:{captcha}")
mail.send(message)
# 应该把验证码存到缓存中如:memcached/redis
# 用数据库的方式,坏处速度慢
email_captcha = EmailCaptchaModel(username=username, email=email, captcha=captcha)
db.session.add(email_captcha)
db.session.commit()
return jsonify({"code": 200, "message": "", "data": None})
# @bp.route("/mail_test")
# def mail_test():
# message=Message(subject="邮箱测试",recipients=["2646394509@qq.com"],body="这是一条测试信息")
# mail.send(message)
# return "success"
# #
@bp.route('/index')
# @login_required
def index():
return render_template('index.html')
@bp.route('/home_page', methods=['GET', 'POST'])
# @login_required
def home_page():
image_url = f"assets/img/us/avatar ({random.randint(1, 13)}).jpg"
if request.method == 'GET':
return render_template('pages-profile.html', image_url=image_url)
else:
person_form = request.form
person = PersonDataModel(Company=person_form['Company'], phone_num=person_form['phone_num'],
first_name=person_form['first_name'],
last_name=person_form['last_name'], addr=person_form['addr'], city=person_form['city'],
postcode=person_form['postcode'], country=person_form['country'],
introdution=person_form['introdution'])
db.session.add(person)
db.session.commit()
return render_template('pages-profile.html', image_url=image_url)
没有合适的资源?快使用搜索试试~ 我知道了~
基于Python flask 的豆瓣电影top250数据评分可视化
共179个文件
js:41个
css:35个
jpg:24个
需积分: 0 0 下载量 144 浏览量
2024-08-03
17:50:36
上传
评论
收藏 69.96MB RAR 举报
温馨提示
基于Python flask 的豆瓣电影top250数据评分可视化
资源推荐
资源详情
资源评论
收起资源包目录
基于Python flask 的豆瓣电影top250数据评分可视化 (179个子文件)
style.default.premium.css 433KB
bootstrap.css 193KB
bootstrap.min.css 156KB
icofont.min.css 90KB
animate.css 76KB
bootstrap-grid.css 66KB
boxicons.css 65KB
animate.min.css 57KB
boxicons.min.css 52KB
bootstrap-grid.min.css 50KB
main.min.css 26KB
aos.css 25KB
OverlayScrollbars.css 24KB
OverlayScrollbars.min.css 20KB
venobox.css 19KB
choices.css 8KB
animations.css 7KB
choices.min.css 7KB
login.css 5KB
bootstrap-reboot.css 5KB
bootstrap-reboot.min.css 4KB
register.css 3KB
style.css 3KB
base.css 2KB
first.css 2KB
base.min.css 2KB
movie-datatable.css 1KB
Chart.css 858B
transformations.css 653B
justValidateTooltip.css 619B
Chart.min.css 521B
justValidateTooltip.min.css 448B
styles.css 300B
base.css 138B
charts.css 30B
boxicons.eot 224KB
quarry_cloudy_8k.hdr 93.97MB
demo.html 143KB
base.html 6KB
pages-profile.html 5KB
manger.html 5KB
index.html 4KB
charts.html 4KB
tooltip.html 4KB
login.html 3KB
movie-datatable.html 3KB
register.html 2KB
word.html 2KB
index.html 1KB
favicon.ico 5KB
test_flask.iml 642B
alembic.ini 857B
word.jpg 1.71MB
world.topo.bathy.200401.jpg 1.25MB
starfield.jpg 901KB
login.jpg 400KB
avatar (2).jpg 102KB
3.jpg 102KB
southeast.jpg 89KB
avatar (5).jpg 88KB
avatar (11).jpg 84KB
avatar (16).jpg 59KB
1.jpg 59KB
avatar (12).jpg 59KB
avatar (3).jpg 57KB
avatar (14).jpg 54KB
avatar (15).jpg 45KB
avatar (13).jpg 40KB
QR.jpg 37KB
avatar (8).jpg 36KB
avatar (1).jpg 28KB
avatar (7).jpg 26KB
avatar (4).jpg 13KB
avatar (9).jpg 11KB
avatar (10).jpg 9KB
avatar (6).jpg 5KB
echarts-gl.min.js 581KB
Chart.bundle.js 580KB
echarts.min.js 515KB
Chart.js 433KB
OverlayScrollbars.js 361KB
jquery.overlayScrollbars.js 316KB
Canada.js 313KB
main.min.js 264KB
bootstrap.bundle.js 223KB
Chart.bundle.min.js 221KB
Chart.min.js 169KB
choices.js 166KB
bootstrap.js 132KB
echarts-liquidfill.min.js 117KB
echarts-wordcloud.min.js 112KB
isotope.pkgd.js 89KB
choices.min.js 80KB
bootstrap.bundle.min.js 79KB
bootstrap.min.js 59KB
OverlayScrollbars.min.js 53KB
jquery.overlayScrollbars.min.js 42KB
just-validate.js 37KB
simple-datatables.js 37KB
isotope.pkgd.min.js 35KB
共 179 条
- 1
- 2
资源评论
hgjhhgg
- 粉丝: 2
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Python SOAP 客户端.zip
- Python ODBC 桥.zip
- Python MIDI 库.zip
- Python for DevOps repo 包含有用的 Python 脚本,可供您学习并在日常 DevOps 自动化任务中实施 .zip
- Python API 包装器和库列表.zip
- Python - 与我的 YouTube 频道相关的脚本存储在这里,可以用任何版本的 Python 编写.zip
- PyClass 课程计划.zip
- Puppet 模块用于安装和管理 Python、pip、virtualenvs 和 Gunicorn 虚拟主机 .zip
- jieshao123456
- Java 将本地mp4推流rtsp
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功