flask mysql 连接池_Flask使用数据库连接池

from flask importBlueprint,render_template,request,session,redirect,g,current_appfrom ..utils.sql importSQLHelper

account= Blueprint('account',__name__)from wtforms importFormfrom wtforms.fields importsimple,core,html5from wtforms importvalidatorsfrom wtforms importwidgetsclassLoginForm(Form):

user=simple.StringField(

validators=[

validators.DataRequired(message='用户名不能为空.'),#validators.Length(min=6, max=18, message='用户名长度必须大于%(min)d且小于%(max)d')

],

widget=widgets.TextInput(),

render_kw={'class': 'form-control'}

)

pwd=simple.PasswordField(

validators=[

validators.DataRequired(message='密码不能为空.'),#validators.Length(min=8, message='用户名长度必须大于%(min)d'),

#validators.Regexp(regex="^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}",

#message='密码至少8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符')

],

widget=widgets.PasswordInput(),

render_kw={'class': 'form-control'}

)

@account.route('/login',methods=['GET',"POST"])deflogin():if request.method == 'GET':

form=LoginForm()return render_template('login.html',form=form)

form= LoginForm(formdata=request.form)if notform.validate():return render_template('login.html', form=form)

obj= SQLHelper.fetch_one("select id,name from users where name=%(user)s and pwd=%(pwd)s", form.data)ifobj:

session.permanent=True

session['user_info'] = {'id':obj['id'], 'name':obj['name']}return redirect('/index')else:return render_template('login.html',msg='用户名或密码错误',form=form)classRegisterForm(Form):

name=simple.StringField(

label='用户名',

validators=[

validators.DataRequired()

],

widget=widgets.TextInput(),

render_kw={'class': 'form-control'},

default='alex')

pwd=simple.PasswordField(

label='密码',

validators=[

validators.DataRequired(message='密码不能为空.')

],

widget=widgets.PasswordInput(),

render_kw={'class': 'form-control'}

)

pwd_confirm=simple.PasswordField(

label='重复密码',

validators=[

validators.DataRequired(message='重复密码不能为空.'),

validators.EqualTo('pwd', message="两次密码输入不一致")

],

widget=widgets.PasswordInput(),

render_kw={'class': 'form-control'}

)

email=html5.EmailField(

label='邮箱',

validators=[

validators.DataRequired(message='邮箱不能为空.'),

validators.Email(message='邮箱格式错误')

],

widget=widgets.TextInput(input_type='email'),

render_kw={'class': 'form-control'}

)

gender=core.RadioField(

label='性别',

choices=(

(1, '男'),

(2, '女'),

),

coerce=int

)

city=core.SelectField(

label='城市',

choices=SQLHelper.fetch_all('select id,name from city',{},None),#choices=(

#(1, '篮球'),

#(2, '足球'),

#),

coerce=int

)

hobby=core.SelectMultipleField(

label='爱好',

choices=(

(1, '篮球'),

(2, '足球'),

),

coerce=int

)

favor=core.SelectMultipleField(

label='喜好',

choices=(

(1, '篮球'),

(2, '足球'),

),

widget=widgets.ListWidget(prefix_label=False),

option_widget=widgets.CheckboxInput(),

coerce=int,

default=[1, 2]

)def __init__(self, *args, **kwargs):

super(RegisterForm, self).__init__(*args, **kwargs)

self.city.choices= SQLHelper.fetch_all('select id,name from city',{},None)defvalidate_name(self, field):"""自定义pwd_confirm字段规则,例:与pwd字段是否一致

:param field:

:return:"""

#最开始初始化时,self.data中已经有所有的值

#print(field.data) # 当前name传过来的值

#print(self.data) # 当前传过来的所有的值:name,gender.....

obj= SQLHelper.fetch_one('select id from users where name=%s',[field.data,])ifobj:raise validators.ValidationError("用户名已经存在") #继续后续验证

#raise validators.StopValidation("用户名已经存在") # 不再继续后续验证

@account.route('/register',methods=['GET','POST'])defregister():if request.method == 'GET':

form=RegisterForm()return render_template('register.html',form=form)

form= RegisterForm(formdata=request.form)ifform.validate():print(form.data)else:print(form.errors)return "sdfasdfasdf"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值