flask-模板使用


flask-模板使用


  • 模板方法:
    • 模板中的url_for跟后台視圖的url_for使用起來基本是一樣的,也可以傳遞參數
      • 使用方式
        • {{ url_for('func') }}
  • 過濾器:
    • 過濾器是通過管道符號  |  進行使用的,例如: {{ name|length }}, 將返回name的長度。過濾器相當於一個函數,把當前的變量傳遞到過濾器中, 然后根據過濾器自己的判斷。再返回相應的值,之后在將結果渲染。
    • 常用的內置過濾器:
      • abs(value) : 返回一個數值的絕對值。
        • -1|abs
      • default(value, default_value, boolean=false) : 如果當前的變量沒有值,則使用參數中的值來代替。  name|default('ivy')  -- 如果name不存在,則使用ivy來代替。boolean=false默認是在這個變量為undefined的時候才會使用的default的值。當這個變量又被定義,但是這個變量為Flase(None , False, 及其各種數據類型的空類型)時,會返回相應的值,這時候只要將boolean=True,就會渲染默認的值。
      • or:
        • {{ value1 or value2 }}   和python自帶的or一樣。
      • escape(value)或e: 轉義字符,會將 < 、> 等符號轉義成html中的符號.
        • content|escape   或者 content|e
      • safe(value): 關閉自動轉義
        • {{ content|safe }}
      • first(value)  返回一個序列的第一個元素。 name|first
      • format(value, *args, **kwargs) : 格式化字符串:
        • {{ "%s" - "%s"|format('hello', 'world') }}
      • last(value): 返回一個序列的最后一個元素
        • name|last
      • length(value)
        • name|length
      • join(value, format_key): 跟python的join一樣
      • int(value): 轉換為int整型
      • float(value): 轉換為float類型
      • lower(value): 轉換為小寫
      • upper(upper): 轉換為大寫
      • replace(value, old, new): 字符串替換
      • truncate(value, length=255, killwords=False): 截取length長度的字符串
      • striptags(value): 刪除字符串中的所有html標簽,如果出現空格,將替換成一個空格
      • trim: 截取字符串前面和后面的空白字符串
      • 更多的過濾器:http://docs.jinkan.org/docs/jinja2/templates.html#builtin-filters
    • 自定義過濾器:
      • 過濾器本身是一個可以在模板中使用的函數,然后對傳進來的參數做一定的處理返回給模板
      • 自定義的過濾器需要在flask中注冊
      • 過濾器的第一個參數是使用過濾器的模板變量,過濾器的返回結果是過濾器的返回值。
      • 下面實現一個簡單的性別轉換的過濾器
      •  1 from flask import Flask, render_template
         2 
         3 app = Flask(__name__)
         4 
         5 
         6 @app.route('/')
         7 def index():
         8     context = {
         9         'sex': 1
        10     }
        11     return render_template('index.html', **context)
        12 
        13 
        14 @app.template_filter('sex_trans')
        15 def sex_trans(value):
        16     rote = {
        17         1: 'male',
        18         0: 'female'
        19     }
        20     return rote.get(value)
        21 
        22 
        23 if __name__ == '__main__':
        24     app.run()
  •  模板標簽
    • {% autoescape off %} content  {% endautoescape  %}
      • 將content里面的內容取消轉義
    • {%  if  ......   %} do something {% else %}   do  something  {% endid %}
      • 條件判斷
    • {% for   sth  in sths %}    do something about  {{  sth }}   {%  endfor  %}
      • for 循環
      • for 循環可以接range函數
      • for 循環中配合使用
        • <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>Title</title>
          </head>
          <body>
          {% for i in range(0,10) %}
              <p>{{ i }} - {{ loop.index }} - {{ loop.first }} - {{ loop.last }} - {{ loop.length }} - {{ loop.nextitem }}</p>
          {% endfor %}
          </body>
          </html>

        • loop.index:  返回該次for循環的次數,默認從1開始排序
        • loop.index0: 制定for循環從第幾次開始排序,返回當次的次數
        • loop.first: 判斷是否為第一次for循環,返回bool值
        • loop.last:
        • loop.length:返回for循環的總次數
        • loop.nextitem:返回for循環的下次的值
  • 加載靜態文件
    • flask加載靜態文件采用url_for函數
      • {{   url_for('static', filename='靜態文件的路徑')      }}
      • url_for的第一個參數是加載靜態文件的文件夾的名字,默認為static, filename為你的靜態資源相對static文件的相對路徑。

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM