Flask(四):flask分页+表单插件+form表单校验

分页

django 中使用封装好的分页器进行分页

提供了: page()

page_number

page_range 生成器 1,20

下一页 上一页 是否有上一页 是否有下一页

flask 自己封装分页器

封装了分页器

# Paginator(data,10)     将data数据进行分页,  每页10条
class Pager:
    """
    flask通过limit   offset 对数据进行分页

    切片
    提供的功能
    """
    #### params = User.query
    ###  data =  列表
    def __init__(self,data,page_size):
        """

        :param data:   数据
        :param page_size:     每页的条数
        """
        self.data = data   ### 数据
        self.page_size = page_size    ### 每页条数
        self.is_start = False
        self.is_end = False
        self.page_count = len(data)    ##  总条数
        self.previous_page = 0     ####上一页
        self.next_page = 0    ##### 下一页
        self.page_number = self.page_count / self.page_size  ### 总共的页数    len(data) / page_size
        if self.page_number == int(self.page_number):
            self.page_number = int(self.page_number)
        else:
            self.page_number = int(self.page_number) + 1
        self.page_range =( x for x in range(1,self.page_number + 1))  ## 迭代器   1 2 3 4 5 6 7 8 9 10

    def page_data(self,page):
        """
        page   offset   limit   每页10条
        1         0       10
        2        10       10
        切片      start     end
        1         0        10         (page-1)* 10
        2         10        20
        3         20        30
        :return:  返回分页的数据
        """
        # result = self.data.offset().limit().all()
        page_start = (page -1) * self.page_size### 切片开始的位置
        page_end = page * self.page_size    ## 切片结束的位置
        result = self.data[page_start:page_end]
        print (page)
        if page == 1:
            print ("--------------")
            self.is_start = True
        if page == self.page_number:
            self.is_end = True
        self.next_page = page + 1  ## 下一页
        self.previous_page = page - 1  ##上一页
        return result

表单插件 flask-wtf

django中学过csrf,django中间件 中已经写好了,flask中csrf嵌在表单后端校验(form表单类),叫flask-wtf

pip install flask-wtf
 

form表单

form表单类

  • 前端校验

    • 对页面上数据进行校验,校验的字符串的长度,类型,是否为空,

  • 后端校验

    • 校验用户是否存在,校验数据的(敏感字(admin))

1、定义form模型

2、视图返回实例对象

3、前端调用

{% extends "base.html" %}

{% block label %}
    任务发布
{% endblock %}
{% block content %}

    <p>
        {{ task.name.label }}:
        {{ task.name }}
    </p>
    <p>
    {{ task.description.label }}:
        {{ task.description }}
    </p>
    <p>
    {{ task.time.label }}:
        {{ task.time }}
    </p>
    <p>
    {{ task.public.label }}:
        {{ task.public }}
    </p>

{% endblock %}

form 表单 前端校验

常用的前端校验的规则

DataRequired不能为空
Email是否是邮箱格式
Equelto校验两个值是否心相同,常用于校验密码是否一样
length长度 max min
NumberRange数字范围
AnyOf指定范围
NoneOf不在范围

需要在视图中看到检验结果

自定义校验

定义规则

安装

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值