flask 之(三) --- 筛选|分页|过滤

筛选

查询数据筛选语法:类名.query.筛选符 

  .all( ):获取结果集;.count( ):获取查询到的对象数量

  类名.query.filter(类名.属性.运算符('xxx')).all()

  类名.query.filter(类名.属性 数学运算符 值).all()

筛选符:

  filter_by():根据什么过滤,通常用在级连关系查询上,属性=值。不常用;     filter():         查询获取数据

  offset(): 偏移,偏移前几条取数据; limit(): 限制,限制取多少条数据;   order_by(): 根据什么字段排序;  

  get():  根据主键获取数据;    first():  取第一个元素;        paginate():   分页

  • 数学运算符:

   contains 包含,模糊查询; startswith 以什么开始; endswith  以什么结束;

   in_  在什么范围中;     like  包含,模糊查询; __gt__  大于 

   __ge__  大于等于;     __lt__  小于;     __le__  小于等于

 1 import random
 2 from operator import or_, and_
 3 from flask import Flask, render_template, request, redirect, url_for
 4 from flask_sqlalchemy import SQLAlchemy
 5 from sqlalchemy import text
 6 
 7 app = Flask(__name__)
 8 app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///flaskmodel.sqlite"
 9 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
10 db = SQLAlchemy(app)
11 
12 
13 class Student(db.Model):
14     id = db.Column(db.Integer, primary_key=True, autoincrement=True)
15     name = db.Column(db.String(32), unique=True)
16     score = db.Column(db.Integer, default=60)
17     def save(self):     # 类方法。对数据进行保存提交
18         db.session.add(self)
19         db.session.commit()
20 
21 # 数据库初始化,新建一个数据库
22 @app.route("/init/")
23 def init():
24     db.create_all() # 新建数据库
25     return "初始化成功"
26 # 新建一个学生表,在内加入学生信息
27 @app.route("/addstudent/")
28 def add_student():
29     student = Student(name="小明%d" % random.randrange(10000), score=random.randrange(100))
30     student.save()      # 调用save()类方法,对要添加的数据进行添加提交
31     return "添加成功"
32 
33 
34 @app.route("/students/")
35 def students():
36     # 获取成绩在 80分以上的学生信息
37     student_list = Student.query.filter(Student.score > 80).all()
38     student_list = Student.query.filter(Student.score.__gt__(80)).all()
39 
40     # 获取成绩在 60分以下的学生信息
41     student_list = Student.query.filter(Student.score < 60).all()
42     student_list = Student.query.filter(Student.score.__lt__(60)).all()
43 
44     # 获取成绩是 [60、81、100、200]列表内的学生信息
45     student_list = Student.query.filter(Student.score.in_([60, 81, 100, 200])).all()
46 
47     # 获取成绩在 60分以上、80分一下的学生信息。
48     # filter之后对象类型是BaseQuery,可以链式调用:Student.query.filter(xxx).filter().filter().filter()
49     student_list = Student.query.filter(Student.score > 60).filter(Student.score < 80).all()
50 
51 
52     # filter_by():通常级联查询,条件是确切的=那种。条件 改成 属性=值
53     student_list = Student.query.filter_by(score = 80).all()
54 
55     # offset():越过三条数据取3条数据的 学生数据结果
56     student_list = Student.query.offset(3).limit(3).all()
57 
58     # 通过成绩从高到底排序,order_by(text("-score"))
59     student_list = Student.query.order_by(text("-score")).all()
60 
61     # 通过order_by对成绩排序,越过前三条数据后offset(3),取四条学生信息数据limit(4)
62     # order_by必须放在最前面。limit和offset无顺序,实际上都是先offset再limit
63     student_list = Student.query.order_by("score").limit(4).offset(3).all()
64 
65 
66     # BaseQuery是可迭代元素,可以被for..in迭代出元素。all只是将格式转换为了列表。
67     student_list = Student.query.order_by("score")
68 
69     # 获取学生数据的第一个元素,结果不再是复数。不可迭代。结果的类型是一个Student对象
70     student = Student.query.first()
71     return render_template("student_list1.html", student_list=student_list)
72 
73 
74     # 原生分页。可以从客户端接受参数,参数是页码,每一个三条数据
75     page = request.args.get("page", 1, type=int)  # 获取get请求数据:参数是page、默认值是1、类型是:int
76     student_list = Student.query.offset(3*(page-1)).limit(3).all()
77     return render_template("student_list1.html", student_list=student_list)
78 
79     # 对获取的数据进行分页
80     pagination = Student.query.paginate()
81     return render_template("student_list1.html", pagination=pagination)
82 
83 
84 if __name__ == '__main__':
85         app.run()    
  • 逻辑运算符: 

  与and_  或or_  非not_

  filter(and_(条件),条件...)  filter(or_(条件),条件...)  filter(not_(条件),条件...)

# 与:and_   filter(and_(条件))
huochelist = kaihuoche.query.filter(and_(kaihuoche.id == 1,kaihuoche.name == 'lc'))

# 或:or_    filter(or_(条件))
huochelist = kaihuoche.query.filter(or_(kaihuoche.id == 1,kaihuoche.name =='lc'))

# 非:not_   filter(not_(条件))  注意条件只能有一个
huochelist = kaihuoche.query.filter(not_(kaihuoche.id == 1))
 1 # 查询指定范围内的数据。and_ 方法
 2 @app.route("/students2/")
 3 def students2():
 4     student_list = Student.query.filter(and_(Student.score.__gt__(60), Student.score.__lt__(90)))
 5     return render_template("student_list2.html", student_list=student_list)
 6 
 7 # 查询后 删除数据
 8 @app.route("/dropfirst/")
 9 def drop_first():
10     student = Student.query.order_by(text("-score")).first()
11     print(student.score)
12     db.session.delete(student)
13     db.session.commit()
14     return "88"
15 
16 # 查询后,修改数据值
17 @app.route("/updatescore/")
18 def update_score():
19     student = Student.query.order_by(text("score")).first()
20     print(student.score, student.id)
21     student.score = 100
22     db.session.add(student)
23     db.session.commit()
24     return "完成"
25 
26 if __name__ == '__main__':
27     app.run()

 

分页

  分页器:paginate。分页查询,需要想要的页码,每一页显示多少数据

  分页对象:分页器(Pagination)返回的对象。包含了所有的分⻚页信息。

  封装实现:persons = Person.query.paginate(page_num, per_page, False).items

  原生实现:persons = Person.query.offset((page_num - 1) * per_page).limit(per_page) 

       select * from users offset 0 limit 20   ;select * from users offset 20 limit 40

  • 使用:pagination(page,per_page, False(是否抛异常))
    •  page:       当前的⻚页码
    •  per_page: 每⻚页的条数
    •  error_out: 当查询出错时是否报错
 1 @bp.route('/students/')
 2 def student_list():
 3     """
 4     /students/?page=2
 5     """
 6     page = int(request.args.get('page', 1))
 7     per_page = 2   # 每页显示2条数据
 8     students = Student.query.paginate(page=page, per_page=per_page)
 9 
10     return render_template('students.html', students=students)
  • 属性

    page:当前⻚页码      pages:总⻚页数      total:总条数

    prev_num:上⼀⻚页的⻚页码   next_num:   下⼀⻚页的⻚页码

    has_prev: 是否有上一⻚页      has_next:     是否有下一⻚页

    items:      当前⻚页的数据      per_page:    每⻚页的条数,默认为20条

 1 <div>
 2     <a href="{{ url_for('blue.student_list') }}">首页</a>
 3 
 4     {% if students.has_prev %}   是否有上一页
 5         <a href="{{ url_for('blue.student_list', page=students.prev_num) }}">上一页</a>
 6     {% endif %}
 7 
 8     当前{{ students.page }}页,共{{ students.pages }}页,总共{{ students.total }}条
 9     
10     {% if students.has_next %}  是否有下一页
11         <a href="{{ url_for('blue.student_list', page=students.next_num) }}">下一页</a>
12     {% endif %}
13 
14     <a href="{{ url_for('blue.student_list', page=students.pages) }}">尾页</a>
15 </div>
  • 方法
    • iter_pages:  返回一个迭代器。在分页导航条上显示的页码列表。显示不完全时返回NOne
    • prev:          上⼀页的分页对象
    • next:              下一⻚的分页对象
 1 <div>
 2     {% for page in students.iter_pages() %}
 3         {% if page %}
 4             {% if page == students.page %}
 5                 {{ page }}
 6             {% else %}
 7                 <a href="{{ url_for('blue.student_list', page=page) }}">{{ page }}</a>
 8             {% endif %}
 9         {% else %}
10             ...
11         {% endif %}
12     {% endfor %}
13 </div>

 

  • 分页宏定义
{# 分页显示的宏 #}
{% macro pagination_widget(pagination, endpoint) %}
    <ul class="pagination">
        <li{% if not pagination.has_prev %} class="disabled"{% endif %}>
            <a href="{% if pagination.has_prev %}{{ url_for(endpoint,page = pagination.page - 1, **kwargs) }}
            {% else %}#{% endif %}">&laquo;
            </a>
        </li>
        {% for p in pagination.iter_pages() %}
            {% if p %}
                {% if p == pagination.page %}
                    <li class="active">
                        <a href="{{ url_for(endpoint, page = p, **kwargs) }}">{{ p }}</a>
                    </li>
                {% else %}
                <li>
                    <a href="{{ url_for(endpoint, page = p, **kwargs) }}">{{ p }}</a>
                </li>
                {% endif %}
            {% else %}
            <li class="disabled">
                <a href="#">&hellip;</a>
            </li>
            {% endif %}
        {% endfor %}
        <li{% if not pagination.has_next %} class="disabled"{% endif %}>
            <a href="{% if pagination.has_next %}{{ url_for(endpoint,page = pagination.page + 1, **kwargs) }}{% else %}#{% endif %}">&raquo;</a>
        </li>
    </ul>
{% endmacro %}

 

过滤

 过滤器: 

   default:默认值    capitalize:首字母大写    lower:全小写    upper:全大写    

   trim:去除空格    reverse:反转    format:格式化输出    safe:关闭转义(已审查,没有安全隐患)    

   striptags:将值中标签去掉    round:四舍五入(截取)    abs:绝对值    first:第一个元素    

   last:最后一个元素    length:列表长度    sum:列表求和    sort:列表排序(升序)      join:合并字符串

  • 模版文件中
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>


语法:
    {{ 变量 | 过滤器 | 过滤器 }}
例子:
    {# 当变量未定义时,显示默认字符串,可以缩写为d #}
    <p>{{ name | default('No name') }}</p>
 
    {# 单词首字母大写 #}
    <p>{{ 'hello' | capitalize }}</p>
 
    {# 单词全小写 #}
    <p>{{ 'XML' | lower }}</p>
 
    {# 去除字符串前后的空白字符 #}
    <p>{{ 'hello' | trim }}</p>
 
    {# 字符串反转,返回"olleh" #}
    <p>{{ 'hello' | reverse }}</p>
 
    {# 格式化输出,返回"Number is 2" #}
    <p>{{ '%s is %d' | format("Number", 2) }}</p>
 
    {# 关闭HTML自动转义 #}
    <p>{{ '<em>name</em>' | safe }}</p>
    
    {# 四舍五入取整,返回13.0 #}
    <p>{{ 12.8888 | round }}</p>
 
    {# 向下截取到小数点后2位,返回12.88 #}
    <p>{{ 12.8888 | round(2, 'floor') }}</p>
 
    {# 绝对值,返回12 #}
    <p>{{ -12 | abs }}</p>

    {# 取第一个元素 #}
    <p>{{ [1,2,3,4,5] | first }}</p>
 
    {# 取最后一个元素 #}
    <p>{{ [1,2,3,4,5] | last }}</p>
 
    {# 返回列表长度,可以写为count #}
    <p>{{ [1,2,3,4,5] | length }}</p>
 
    {# 列表求和 #}
    <p>{{ [1,2,3,4,5] | sum }}</p>
 
    {# 列表排序,默认为升序 #}
    <p>{{ [3,2,1,5,4] | sort }}</p>
 
    {# 合并为字符串,返回"1 | 2 | 3 | 4 | 5" #}
    <p>{{ [1,2,3,4,5] | join(' | ') }}</p>

</body>
</html>
  • template_filter 自定义模板过滤器
1 @bp.app_template_filter('mycut')
2 def mycut(x):
3     return x if len(x) < 6 else x[:5] + '...'
4 """    
5 使用
6 <p>{{ 'hello' | mycut }}</p>
7 """


 

转载于:https://www.cnblogs.com/TMMM/p/11469504.html

Flask项目:模糊筛选表格(DataFilterDisplay) 文件层级: DataFilterDisplay static app.js style.css templates data.html index.html plot.html uplpads a.xlsx b.xlsx app.py data_tool.pyapp.js style.css data.html index.html plot.html app.py data_tool.py 阅读详情

相关推荐

工业视觉中HDR算法的动态范围优化与Debevec/Mertens方法实践

本文深入探讨了工业视觉中HDR(高动态范围)成像技术,重点解析了Debevec和Mertens两种核心算法。针对工业场景中因动态范围不足导致的过曝与欠曝问题,文章详细对比了两种方法的原理、实现步骤、参数调优及适用场景,为工程师在静态检测与高速产线等不同需求下,选择并实践HDR算法提供了清晰的指导。

weixin_29099217的博客 193

Flask入门数据库过滤器与查询集(十一)

Flask入门数据库过滤器与查询集(十一)

weixin_42306440的博客 629

基于机器学习和辐射传输的地表温度模拟方法对比

对于不同的地表类型和不同的年份,经验方法是实用的,虽然整体精度不如物理方法,但具有计算速度快、对模型内部结构考虑较少等优点。尽管深度学习等回归的经验方法不需要考虑辐射传输和能量平衡的具体过程, 但在其输入参数的选择上也不能是无序和随机的,而是应选择有关相应物理过程的参数。经验方法在处理不同年份相同地表类型或表现相对较好, RMSE 约为 1.50K,但在不同地表类型且不同年份模拟结果较差, RMSE 约为 3.0K, 虽然精度不如物理方法,但它具有计算速度快,不需过多考虑模型内部结构的优点。

2301_77907355的博客 1021

在Flask中操作数据库

转自:一只在当地较为英俊的程序猿 前言 Web程序最常用基于关系模型的数据库,这种数据库也称为SQL数据库,因为它们使用结构化查询语言。关系型数据库把数据存储在表中,表模拟程序中的不同实体。简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。 关系模型中常用的概念: 关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名...

LYLLOAD的专栏 2519

RP Fiber Power 版本

RP Fiber Power的版本历史 该软件一直受到多年来广泛的发展计划,这大大扩展了其功能,以及用户界面的质量。 V1 这是第1个版本。 它仅限于光纤激光器和放大器的连续波计算,并且只能通过脚本进行控制。 V2 版本2引入了交互式表单。 至少对于更简单的模拟,现在可以简单地通过填写表单来工作,而V1必须通过脚本来控制。 例如,屏幕截图显示了输入某些信号参数的表单: 当您基于这些表单执行计算时,程序将根据您的表单输入自动编写脚本文件,然后执行该脚本。如果您需要编写脚本以获得更大的灵活性,可以稍后查看该脚

Asdmath的博客 2431

IIS - 会话cookie中缺少HttpOnly属性

不啰嗦,我们直接开始! 先进行常规设置 打开配置编辑器 选中图中节点,将httpOnlyCookies设置为true 然后。。。不起作用。。。 换种方式 通过配置出站规则getcookie添加HttpOnly 在Web.config中添加如下出站规则 <rewrite> <outboundRules> <rule name="Add HttpOnly"> <match serverVa.

。 21万+

flask sqlalchemy基本操作(查询)

Flask sqlalchemy基本操作(查询)

tangsiqi130的博客 2060

Pi0 项目复现及项目问题解决方案(全网抢先发布~)

Pi0 项目复现及项目问题解决方案(全网抢先发布~)

m0_68167062的博客 2261

python query.filter函数_如何在Flask SqlAlchemy中模拟<ModelClass>.query.filter_by()

简言之在Flask SqlAlchemy中测试模型类时,如何模拟方法.query.filter_by(),以便返回模拟模型对象的列表?全部细节假设我们有一个如下代码所示的模型类from flask.ext.sqlalchemy import SQLAlchemydb = SQLAlchemy()class SomeModel(db.Model):# more column mapping and ...

weixin_28785681的博客 1091

Python 爬取新浪财经 7x24(1): 下载数据

前言 最近在做一个需要很多财经数据的项目。于是想到可不可以通过爬虫来解决(尝试白嫖)。 提供财经数据的网站有很多个,其中比较靠谱和更新比较及时的应该是新浪7x24 live数据。 http://finance.sina.com.cn/7x24/?tag=0 这个问题有一定的难度,因为这个网页是动态加载的。每一次只会加载部分数据,而只有拉到底部才可以加载新的数据。 于是乎,我们要做的事情是: 下载数据 保存到数据库 本篇介绍如何下载数据。 代码 闲言少叙书归正文,代码的实现如下: import reque

ZJ_11701的博客 2905

【系统分析师】2026年上半年真题:案例分析-答案及详解(回忆版)

案例一聚焦因果分析法(鱼骨图)的应用,分析企业订单履约问题。问题1阐述因果分析法定义及常见方法(鱼骨图、5个为什么等);问题2将8个原因归类为人员、方法、合同等5类;问题3筛选适合鱼骨图的场景(如系统响应慢、服务器故障等),强调其适用于复杂根因分析。 案例二对比嵌入式系统中Linux与RTOS的差异(实时性、资源占用等),结合智能监控终端需求推荐Linux+四核ARM方案(高算力、性价比),并列选Linux的5大优势(生态成熟、多任务支持等)。 案例三设计互联网医院系统用例图(患者、医生等参与

数据知道的博客 1353

Flask筛选数据、分页、一对多关联

flask筛选数据 添加多条学生信息 s_list = [学生对象1, 学生对象2,..] db.session.add_all(s_list) 运算符 filter(模型名.字段.运算符(‘xxx’)) filter(模型名.字段 运算符 值 ) 运算符 lt 小于 le 小于等于 gt 大于 ge 大于等于 in_ 在范围内 order_by 排序 limit 截取几个信...

beichen0518的博客 2536

微信小程序|基于小程序实现定位打卡功能

此文主要在小程序内实现打卡功能,可根据用户位置与公司设定的打卡范围实时判断打卡是否合法,并在后台对打卡记录进行管理。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

Flask 笔记五:给列表加上搜索和筛选

a href="{{ url_for('home.note_list', page=page_data.prev_num, q=q) }}">上一页</a><input type="text" name="q" value="{{ q or '' }}" placeholder="搜标题或内容"><input type="text" name="q" value="{{ q or '' }}" placeholder="搜标题">一个入口读参数,多个小函数各查各的,模板分区展示结果。<a href="?

liuyicenysabel的博客 297

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

筛选数据_Flask学习笔记(十八):数据筛选

前言在业务程序中,通常情况下要处理数据表格,当表格规模较大时,我们采用的是分页功能,关于这一点,在上一篇文章中已经介绍过。然而,还有一个问题是必须面对的,那就是需要根据不同的条件进行数据筛选,当需要快速筛选时,将少量条件筛选框与数据放在同一个页面上是非常有必要的。这一篇文章即来研究一下当条件筛选框与查询数据同一个页面时该怎么处理。创建条件筛选表单首先当然是创建表单,还是以用户管理这个小程...

weixin_39829073的博客 1224

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

flask-admin学习四(条件过滤筛选)

flask-admin的条件筛选是很容易的!很简单的!并且自带时间控件。 class ProductModel(ModelView): can_create = False can_edit = False column_searchable_list = ['...

chensimu2751的博客 1178

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Flask自定义时间过滤器

关于Flask过滤器 Flask自带的过滤器功能有限,很多时候没办法满足用户需求。 故,Flask为用户提供了template_filter装饰器,用来创建用户所需的自定义过滤器 时间显示 经常刷博客的朋友都会注意,博客发布时间的显示大致规则如下: 时间段 显示格式 1分钟内 刚刚 1–60分钟 多少分钟前 1-24小时 多少小时前 1–30天内 多少天前 30天以...

SlaughterDevil的博客 496

Flask-SQLAlchemy 对数据库的过滤查询

Flask-SQLAlchemy 对数据库的过滤查询 使用Flask-SQLAlchemy 从数据库中查询数据,可以指定查询的条件。数据库中的数据很多,用户需要的只是某一条数据或满足某个条件的数据。 在Flask-SQLAlchemy 中,指定查询条件是通过数据对象的query 对象来实现的,query 对象中实现了很多常用的过滤方法,可以方便地实现过滤查询。 一、准备数据库和数据表 ...

weixin_43790276的博客 5002

商品数据分析与可视化之 flask 开发记录(三)

商品大数据分析与可视化、flask开发、scrapy、pandas

qq_45897239的博客 1265

【Flask数据库】filter方法常用过滤条件

文章目录一、过滤条件1、 equals:等于2、 not equals:不等于3、 like:为Column的一个方法,表模糊匹配,like内传入匹配字段。4、 in_:判度胺是否存在5、 not in:判断是否不存在6、 is null:为空7、 is not null:不为空8、and:并,可用逗号表示并,也可通过导入and_9、 or:或备注 一、过滤条件 过滤是数据提取的重要功能,以下为f...

qq_45696681的博客 4145

多条件分页列表还不会写?这篇教你分页、搜索、排序、过滤一网打尽!

本文介绍了企业级系统中多条件分页查询的全栈实现方案。以用户管理为例,涵盖数据库设计(MySQL)、后端实现(Python Flask/SQLAlchemy 和 Java Spring Boot/MyBatis-Plus)和前端开发(Vue3+Element Plus)。重点解析了参数接收、SQL动态拼接、分页查询封装等关键技术点,并提供了规范的接口文档模板。通过分层架构实现分页搜索功能,强调数据库索引优化、后端参数校验和前端参数绑定的一致性,为开发者提供了可复用的最佳实践方案。

m0_57021623的博客 485

Django中,如何像Flask一样实现条件过滤?

已知Flask条件过滤大致思路: filters = [News.status != 0] # 如果有关键词 if keywords: # 添加关键词的检索选项 filters.append(News.title.contains(keywords)) # 查询 paginate = News.query.filter(*filters) \ .order_by(News.cr...

zhu6201976的博客 7万+

Flask--过滤器

过滤器 1.字符串过滤器 (1)lower: 将内容变成小写 {{‘HELLO WORLD’|lower}} (2)upper: 将内容变成大写 {{‘hello’|upper}} (3)title: 将单词的首字母变成大写 {{‘my name’|title}} (4)trim: 去除首尾空格 x{{’ hello world ‘|trim}}x (5)reverse: 内容翻转 {{‘love...

weixin_44111377的博客 680

【Flask】flask框架模板中自定义过滤器

自定义过滤器 过滤器的本质是函数。当模板内置的过滤器不能满足需求,可以自定义过滤器。自定义过滤器有两种实现方式: 一种是通过Flask应用对象的 add_template_filter 方法 一种是通过装饰器来实现自定义过滤器 重要:自定义的过滤器名称如果和内置的过滤器重名,会覆盖内置的过滤器。 示例:自定义数组反转过滤器 方式一 通过调用应用程序实例的add_template_filter方法实现自定义过滤器。该方法第一个参数是函数名,第二个参数是自定义的过滤器名称: def do_list_reve

码农-Vax天道的时间宝藏 2530

flask之 自定义模板过滤器

flask自定义模板过滤器 文章目录flask自定义模板过滤器@app.template_filter('过滤器名字') @app.template_filter(‘过滤器名字’) flask 中用@app.template_filter(‘name’)来自定义名字为name的过滤器。 然后在该视图函数下定义函数来指定该过滤器的功能即可 如下面的案例为返回博文发表时间(如在朋友圈,微博等)形如’ xxx小时之前 ’ 在py文件中自定义过滤器 我定义的过滤器名称为handle_time;功能是根据发布时间和当

yuaicsdn的博客 556
上一篇: flask 之(二) --- 视图|模版|模型
下一篇: flask 之(四) --- 扩展|缓存|会话
baoding4359
博客等级 码龄11年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值