zoukankan      html  css  js  c++  java
  • flask第二十四篇——模板【6】自定义过滤器

    请关注孟船长的公众号:自动化测试实战

    大家想了解其他过滤器可以参考这里:

    http://jinja.pocoo.org/docs/dev/templates/#builtin-filters

    ---------

    自定义过滤器

    这里要用到装饰器template_filter('过滤器名字'),代码:

    flaskDemo.py

    # coding: utf-8
    
    from flask import Flask, render_template
    import flask
    
    app = Flask(__name__)  # type: Flask
    app.debug = True
    
    @app.route('/')
    def login():
        context = {
            "user": {
                "name": "Warren",
                "age": 18,
                "gender": None,
                "comment": u'<script>alert("弹出框")</script>'},
            "subject": ["math", "Chinese", "biology"],
            "num": '3',
            "upper": "I AM A MAN",
            "lower": "i am a boy",
            "repl": "A, A, A, B",
            "title": u'life is short, I choose Python',
            "space": " abc ",
            "tags": u"<p>这是一个HTML标签</p>"}
        return render_template('index.html', **context)
    
    @app.template_filter('del')
    def mydel(value, word):
        return value.replace(word, '')
    
    if __name__ == '__main__':
        app.run()

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>过滤器</title>
    </head>
    <body>
        <p>绝对值:{{ user.age | abs }}</p>
        <p>默认值:{{ user.gender or 'male'}}</p>
        <p>转义:{{ user.comment }}</p>
        <p>格式化:{{ "姓名:%s,年龄:%s" | format(user.name, user.age) }}</p>
        <p>最后一个值:{{ subject | last }}</p>
        <p>第一个值:{{ subject | first }}</p>
        <p>序列的长度:{{ subject | length }}</p>
        <p>拼接:{{ subject | join(', ') }}</p>
        <p>转换成整型:{{ num | int }}</p>
        <p>转换成小写:{{ upper | lower }}</p>
        <p>转换成小写:{{ lower | upper }}</p>
        <p>相同的全部替换:{{ repl | replace('A', 'HERO') }}</p>
        <p>只替换一个:{{ repl | replace('A', 'HERO', 1) }}</p>
        <p>截取字符串:{{ title | truncate(9) }}</p>
        <p>截断单词:{{ title | truncate(9, true) }}</p>
        <p>截取前后空格:{{ space | trim }}</p>
        <p>删除所有HTML标签:{{ tags | striptags }}</p>
        <p>自定义过滤器del:{{ repl | del('A') }}</p>
    </body>
    </html>
    

      

    我们运行代码,发现A全部被删掉了,只剩下逗号:

    上面的mydel就是一个自定义的过滤器啦,是不是很简单呢~

  • 相关阅读:
    服务器状态码
    QuerySet中添加Extra进行SQL查询
    django配置一个网站建设
    MySQL数据库查询中的特殊命令
    125. Valid Palindrome
    121. Best Time to Buy and Sell Stock
    117. Populating Next Right Pointers in Each Node II
    98. Validate Binary Search Tree
    91. Decode Ways
    90. Subsets II
  • 原文地址:https://www.cnblogs.com/captainmeng/p/8794923.html
Copyright © 2011-2022 走看看