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就是一个自定义的过滤器啦,是不是很简单呢~

  • 相关阅读:
    C++ primer学习方法
    windows 下安装使用ipython
    读书和思考
    win7 64位 python3.4&opencv3.0配置安装
    Deep Residual Learning for Image Recognition(MSRA-深度残差学习)
    MATLAB 常用形态学操作函数
    形态学图像处理
    限制对比度自适应直方图均衡(Contrast Limited Adaptive histgram equalization/CLAHE)
    计算机视觉,机器学习 ( 一些资源)
    对CNN模块的分析
  • 原文地址:https://www.cnblogs.com/captainmeng/p/8794923.html
Copyright © 2011-2022 走看看