Flask框架(三)

一 flask_wtf与flask_bootstrap

  1. 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(必填文件) 也一样,并不同于其它的要求

  1. 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定义的其他可用块
参考链接:

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值