分页
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 | 不能为空 |
---|---|
是否是邮箱格式 | |
Equelto | 校验两个值是否心相同,常用于校验密码是否一样 |
length | 长度 max min |
NumberRange | 数字范围 |
AnyOf | 指定范围 |
NoneOf | 不在范围 |
需要在视图中看到检验结果
自定义校验
定义规则
安装