zoukankan      html  css  js  c++  java
  • falsk 与 django 过滤器的使用与区别

    1,flask中内置的过滤器模板中常用方法:

    {#过滤器调用方式{{变量|过滤器名称}} #}
        <!-- safe过滤器,可以禁用转义 -->
        {{'<strong>hello</strong>'|safe}}
        <br/>
        大写转小写
        {{'HELLO'|lower}}
        小写转大写
        {{'hello'|upper}}
        <br/>
        字符串反转
        {{'abc'|reverse}}
        首字母大写
        {{'james'|capitalize}}
        过滤HTML标签
        {{'<em>apple</em>'| striptags}}
        <br/>
        只显示list首个元素
        {{[100,95,55,81]|first}}
        只显示list最后一个元素
        {{[100,95,55,81]|last}}
        显示list的长度
        {{[100,95,55,81]|length}}
        list里所有元素求和
        {{[100,95,55,81]|sum}}
        list进行排序
        {{[100,95,55,81]|sort}}
        format:格式化输出
        {{ '%s is %d' | format('name',17) }}
        <br/>
        对语句块进行过滤
        {% filter upper%}
        qwedr,tyuio,piuytre,rtyuiuyt
        afaife       oifafa, afaf
        {%endfilter%} <br/>
        链式调用过滤器
        {{'abc'|reverse|upper}}
    
        <br><br>
        自定义过滤器
        {{100|my_filter}}

    自定义过滤器(后端视图函数)

    @app.template_filter("my_filter")
    #自定义过滤器
    def my_filter(val):
        return '$' + str(val)

    2,django中内置的过滤器模板中常用方法:

    {#通过内置过滤器实现加减法#}
        {{test_int | add:10}}
        {{list.0}}
        <br>
        {%for i in list%}
        {{i}}
        {#打印索引 从1开始的计数器#}
        {{forloop.counter}}
        {#打印数组索性#}
        {{forloop.counter0}}
        {#倒序索引#}
        {{forloop.revcounter}}
        <br>
        {%endfor%}
    
        <br>
        {% for i in dict%}
        {#取首位和末尾 first last#}
        姓名:{{i.name |first}} &nbsp; 年龄:{{i.age}}
        {%endfor%}
        <br>
        {#大写小写#}
        {{'jack' | upper | lower}}
        {#返回长度#}
        {{'123456'| length}}
        {#截断操作#}
        {{content | truncatechars:10}}
        截断单词{{content | truncatewords:2}}
        {# 格式化日期#}
        {{dt | date:'Y-m-d H:i:s'}}

    自定义过滤器(后端视图函数)

    首先在工程文件的同名配置文件下创建templatetags文件夹,建立myfiler.py用来自定义过滤器

    例:

    from django import template
    #注册过滤器对象
    register = template.Library()
    #自定义过滤器
    #通过装饰器的方式来注册自定义过滤器
    @register.filter
    def my_str(val):
        return "$" +str(val)
    #定义一个双参数过滤器
    @register.filter
    def my_str_two(val,p1):
        return val + p1
    
    #定义一个多参数的过滤器
    #注册过滤器的时候,需要注册SIMPLE_TAG
    @register.simple_tag
    def my_str_many(val,p1,p2):
        return val + p1 + p2
    #定义一个取余数的过滤器
    @register.filter
    def get_line(val):
        return int(val) % 2

    在templates文件夹中模板文件中导入

    {#导入过滤器文件#}
    {% load myfilter %}
    {#导入过滤器文件#}
    {% load my_filter %}
    {{test_str | my_str}}
        {# 两个参数进行调用#}
        {{'你好' | my_str_two:"不好"}}
        {#调用多参数的过滤器#}
        {% my_str_many '你好' '不好' '' %}                             
        {{test_list | length}}
     
  • 相关阅读:
    yii2 gii 命令行自动生成控制器和模型
    控制器中的方法命名规范
    Vue Property or method "" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based
    IDEA插件:GsonFormat
    Spring Boot : Access denied for user ''@'localhost' (using password: NO)
    Typora添加主题
    Git基础命令图解
    Java Joda-Time 处理时间工具类(JDK1.7以上)
    Java日期工具类(基于JDK1.7版本)
    Oracle SQL Developer 连接Oracle出现【 状态: 失败 -测试失败: ORA-01017: invalid username/password; logon denied】
  • 原文地址:https://www.cnblogs.com/xcsg/p/10310897.html
Copyright © 2011-2022 走看看