1. 程式人生 > >flask第二十四篇——模板【6】自定義過濾器

flask第二十四篇——模板【6】自定義過濾器

def 定義 lazy .py highlight abs nbsp tps word

請關註孟船長的公眾號:自動化測試實戰

大家想了解其他過濾器可以參考這裏:

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": ulife 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就是一個自定義的過濾器啦,是不是很簡單呢~

flask第二十四篇——模板【6】自定義過濾器