主页 > 互联网  > 

项目准备(flask+pyhon+MachineLearning)-2

项目准备(flask+pyhon+MachineLearning)-2

目录

1. 注册页面的渲染

2.邮箱的注册验证

3.登录页面的渲染

1. 注册页面的渲染

使用render_template来渲染,注意这里的前端网页使用jinja2模板

详情大家可以参考jinja2介绍

注意每个网页上方都有导航条,大家可以使用jinja2的继承功能,写一个base.html,其他网页都可以继承这个网页,在其上面扩展

2.邮箱的注册验证

使用falsk-mail库完成

制作一个邮箱服务器,我们这里使用QQ邮箱

在config.py中完成配置即可

再创建一个邮箱的模板,进行数据库交互

验证前端输入的邮箱密码是否输入正确,增加一个forms.py

import wtforms from wtforms.validators import Email, Length, EqualTo, InputRequired from exts import db from models import UserModel, EmailCaptchaModel # Form :主要验证用来验证前端提交的数据是否符合要求 class RegisterForm(wtforms.Form): email = wtforms.StringField(validators=[Email(message="邮箱格式错误!")]) captcha = wtforms.StringField(validators=[Length(max=4, min=4, message="验证码格式错误")]) username = wtforms.StringField(validators=[Length(min=3, max=20, message="用户格式错误")]) password = wtforms.StringField(validators=[Length(min=6, max=20, message="密码格式错误")]) password_confirm = wtforms.StringField(validators=[EqualTo("password", message="两次密码不一致")]) # 自定义验证 # 1、 邮箱是否被注册 def validate_email(self, field): email = field.data user = UserModel.query.filter_by(email=email).first() if user: raise wtforms.ValidationError(message="该邮箱已经被注册!") # 2、 验证码是否正确 def validate_captcha(self, field): captcha = field.data email = self.email.data filters = {'email': email, 'captcha': captcha} captcha_model = EmailCaptchaModel.query.filter_by(**filters).first() # print(email,captcha,captcha_model.email) if not captcha_model: raise wtforms.ValidationError(message="邮箱或者验证码错误") # tode 可以删除 captcha_model else: # 使用完毕可以删除 或者 定义是否使用 # False是0,true是1 # db.session.delete(captcha_model) # db.session mit() captcha_model.used = 1 db.session mit() class LoginForm(wtforms.Form): email = wtforms.StringField(validators=[Email(message="邮箱格式错误!")]) password = wtforms.StringField(validators=[Length(min=6, max=20, message="密码格式错误")]) class QuestionForm(wtforms.Form): title = wtforms.StringField(validators=[Length(max=100, min=4, message="标题格式错误")]) content = wtforms.StringField(validators=[Length(min=6, message="内容格式错误")]) class AnswerForm(wtforms.Form): content = wtforms.StringField(validators=[Length(min=4, message="内容格式错误")]) question_id = wtforms.IntegerField(validators=[InputRequired(message="必须要传入问题id")])

获取从前端输入的邮箱密码

# GET :从服务获取数据 # POSt :将客户端的数据提交个服务器 @bp.route("/register", methods=["POST", "GET"]) def register(): if request.method == "GET": if g is None: return redirect("/") log.info("Registering") return render_template("register.html") else: # Post 去请求 # 验证用户提交邮箱和验证是否正确 # 表单验证:flask-wtf form = RegisterForm(request.form) if form.validate(): username = form.username.data password = form.password.data email = form.email.data user = UserModel(email=email, username=username, password=generate_password_hash(password)) db.session.add(user) db.session mit() log.info(f"用户: {username} 邮箱地址: {password} 已经注册成功") return redirect(url_for("auth.login")) else: print(form.errors) log.info(f"用户注册验证不通过,即将返回注册页面") return redirect(url_for("auth.register")) 3.登录页面的渲染 @bp.route("/login", methods=["POST", "GET"]) def login(): if request.method == "GET": if g is None: return redirect("/") 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: return jsonify({'code': 200, 'message': '用户不存在'}) if check_password_hash(user.password, password): # return jsonify({'code': 200, 'message': '用户登录成功'}) # cookie 不适合存储太多数据,只适合存储少量的数据 # seesion session["user_id"] = user.id flash(f"用户:{user.username} 登录成功") return redirect("/") else: return redirect(url_for("auth.login")) else: log.error(form.errors) return redirect(url_for("auth.login"))

标签:

项目准备(flask+pyhon+MachineLearning)-2由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“项目准备(flask+pyhon+MachineLearning)-2