一 flask_wtf与flask_bootstrap
- flask_wtf表单处理
上一篇博客中提出flask_wtf是用来处理表单数据的,而其中
表单类型(StringField、 PasswordField、 SubmitField、 FileField 等)
用来验证的表单有(DataRequired、Length、 Email、 Regexp、 EqualTo),这些在上一篇博客中有详细的解释说明,但是只有一个简单的应用,这里会具体的讲解应用
在创建一个新的项目的时候,通常会有一些行业内通俗的模块与包的名字,比如:static(放置静态文件处:css样式,js样式等)、templatems(放置html文件处)等
而整个项目中除了主函数(run.py)外,还会有一些其他文件,forms.py 就是放置 flask_wtf 表单处理的文件,关于表单处理的要求,会被写在这个文件下,当然还会有其它的文件,下面讲到了,会提及的。
首先,要做的就是安装 flask_wtf 这个库
pip install flask-WTF
注意:这里在安装的时候,看好库名,是 -WTF ,并不是 _wtf ,但是在应用的时候,却是后者
from flask_wtf import FlaskForm
导入这个库里面的 FlaskForm这个类
这里图简单一点,会一次性导入许多的东西,当然都是下面的例子会用到的
from wtforms import StringField, PasswordField, SubmitField, FileField
导入一些常用的表单类型,相当于input标签中type的作用
from wtforms.validators import DataRequired, Length, Email, Regexp, EqualTo
导入一些常用的验证表单,用来确保表单内容是否合法
这里写一个用户登陆和注册时的案例,flask_wtf的作用就是用来限制登陆和注册时的信息
from flask_wtf import FlaskForm
# 确定表单的类型, 相当于input标签中type的作用
from wtforms import StringField, PasswordField, SubmitField, FileField
# 确保表单内容是否合法;
from wtforms.validators import DataRequired, Length, Email, Regexp, EqualTo
# Regexp == regular experssion (用于编写正则表达式的)
class LoginForm(FlaskForm):
user = StringField(
label="用户名/手机/邮箱",
validators=[
DataRequired(message="用户名不能为空"),
Length(5, 12),
]
)
passwd = PasswordField(
label="密码",
validators=[
Length(6)
]
)
submit = SubmitField(
label="登录"
)
class RegisterForm(FlaskForm):
user = StringField(
label="用户名/手机/邮箱",
validators=[
Length(5, 12),
]
)
email = StringField(
label="邮箱",
validators=[
Email("邮箱格式不正确!")
]
)
phone = StringField(
label="电话",
validators=[
Regexp(r'1\d{10}', message="手机格式不正确!")
]
)
passwd = PasswordField(
label="密码",
validators=[
Length(6)
]
)
repasswd = PasswordField(
label="确认密码",
validators=[
EqualTo('passwd', "两次密码不一致!")
]
)
submit = SubmitField(
label="注册"
)
上面的代码,需要注意的一点就是:
lable:(是用来对要填写内容的提示)
validators:(是用来对要填写内容的限制),一些具体的限制内容祥解,在上一篇博客中写过
这里还有一点,被我藏起来了(没想到吧),没写到上面的代码中,下面来提起
在用户注册的时候,有时候会被要求,上传图像,这里就有不同的地方了
来,划重点:
face = FileField(
label="上传头像",
validators=[
FileAllowed(['png', 'jpg'], message="文件非图片")
]
)
validators 中的 FileAllowed 是从from flask_wtf.file import FileAllowed
这里导出的,还有 FileRequired(必填文件) 也一样,并不同于其它的要求
- flask_bootstrap网页编写
flask_bootstrap 是用来编写html文件的基模版
其中bootstrap下面有 base.html 这样的基模版,当然,你也可以自己编写模版
下面是需要注意的几点:
1). 如何在flask中使用Boostrap?
要想在程序中集成Bootstrap,显然要对模板做所有必要的改动。不过,更简单的方法是使用一个名为Flask-Bootstrap 的Flask 扩展,简化集成的过程。Flask-Bootstrap 使用pip安装:
pip install flask_bootstrap
2). Flask 扩展一般都在创建程序实例时初始化,下面是Flask_Bootstrap的初始化方法
from flask_bootstrap import Bootstrap
app = Flask(__name__)
bootstrap = Bootstrap(app)
初始化Flask-Bootstrap 之后,就可以在程序中使用一个包含所有Bootstrap 文件的基模板。这个模板利用Jinja2 的模板继承机制,让程序扩展一个具有基本页面结构的基模板,其中就有用来引入Bootstrap 的元素。
3). 如何引用bootatrap的基模板?
{%extends "bootstrap/base.html"%}
{%block title %}Flask{% endblock %}
这两个块分别表示页面中的导航条和主体内容。在这个模板中,navbar 块使用Bootstrap 组件定义了一个简单的导航条。content 块中有个
4). Flask-Bootstrap定义的其他可用块
参考链接: