注册功能后端逻辑
用户注册要把注册的表单提交上来,因此,我要先对表单进行验证,编辑front.forms
from apps.forms import BaseForm from wtforms import StringField from wtforms.validators import Regexp, Length, EqualTo, ValidationError from utils import xcache from .models import FrontUser class SignUpForm(BaseForm): telephone = StringField(validators=[Regexp(r'1[35678]\d{9}', message='手机号码格式错误')]) sms_captcha = StringField(validators=[Regexp(r'\w{6}', message='短信验证码错误')]) username = StringField(validators=[Length(2,20, message='用户名格式错误')]) password1 = StringField(validators=[Length(5, 30, message='密码格式错误')]) password2 = StringField(validators=[EqualTo('password1', message='两次密码不一致')]) graph_captcha = StringField(validators=[Regexp(r'\w{4}', message='图形验证码错误')]) def validate_telephone(self, field): user = FrontUser.query.fileter_by(telephone=field).first() if user: raise ValidationError('该手机号已被注册') def validate_sms_captcha(self, field): telehone = self.telephone.data sms_captcha = field.data sms_captcha_mem = xcache.get(telehone) if not sms_captcha_mem or sms_captcha_mem != sms_captcha: ValidationError(message='短信验证码错误') def validate_graph_captcha(self, field): graph_captcha = field.data #因为图形验证码存储的key和值都是一样的,所以我们只要判断key是否存在就行 if not xcache.get(graph_captcha): ValidationError(message='图形验证码错误')
然后就是注册的视图处理POST请求了, 编辑front.views.py
class SignUpViews(views.MethodView): def get(self): return render_template('front/front_signup.html') def post(self): signup_form = SignUpForm(request.form) if signup_form.validate(): telephone = signup_form.telephone.data username = signup_form.username.data password = signup_form.password1.data user = FrontUser(telephone=telephone, username=username, password=password) db.session.add(user) db.sessioncommit() return xjson.json_success('恭喜您,注册成功') else: return xjson.json_param_error(signup_form.get_error())
注册功能前端逻辑
111
注册完成跳转回上一个页面
111