溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Flask模板操作一:基本使用

發(fā)布時間:2020-08-06 14:51:53 來源:網絡 閱讀:491 作者:ck_god 欄目:編程語言

基本概念:

  • 模板其實是一個包含響應文本的文件,其中用占位符(變量)表示動態(tài)部分,告訴模板引擎其具體的值需要從使用的數據中獲取

  • 使用真實值替換變量,再返回最終得到的字符串,這個過程稱為“渲染”

  • Flask是使用 Jinja2 這個模板引擎來渲染模板'


渲染模版函數

  • Flask提供的 render_template 函數封裝了該模板引擎

  • render_template 函數的第一個參數是模板的文件名,后面的參數都是鍵值對,表示模板中變量對應的真實值。


基本語法

  • {{}} 來表示變量名,這種 {{}} 語法叫做變量代碼塊

<h2>{{ post.title }}</h2>

Jinja2 模版中的變量代碼塊可以是任意 Python 類型或者對象,只要它能夠被 Python 的 str() 方法轉換為一個字符串就可以,比如,可以通過下面的方式顯示一個字典或者列表中的某個元素:

{{your_dict['key']}}
{{your_list[0]}}
  • 用 {%%} 定義的控制代碼塊,可以實現(xiàn)一些語言層次的功能,比如循環(huán)或者if語句

{% if user %}
    {{ user }}
{% else %}
    hello!<ul>
    {% for index in indexs %}    <li> {{ index }} </li>
    {% endfor %}</ul>

注釋

  • 使用 {# #} 進行注釋,注釋的內容不會在html中被渲染出來

{# {{ name }} #}


過濾器

過濾器的本質就是函數。有時候我們不僅僅只是需要輸出變量的值,我們還需要修改變量的顯示,甚至格式化、運算等等,而在模板中是不能直接調用 Python 中的某些方法,那么這就用到了過濾器。

使用方式:

  • 過濾器的使用方式為:變量名 | 過濾器。

{{variable | filter_name(*args)}}
  • 如果沒有任何參數傳給過濾器,則可以把括號省略掉

{{variable | filter_name}}
  • 如:``,這個過濾器的作用:把變量variable 的值的首字母轉換為大寫,其他字母轉換為小寫

鏈式調用

在 jinja2 中,過濾器是可以支持鏈式調用的,示例如下:

{{ "hello world" | reverse | upper }}

常見內建過濾器

字符串操作

  • safe:禁用轉義

<p>{{ '<em>hello</em>' | safe }}</p>
  • capitalize:把變量值的首字母轉成大寫,其余字母轉小寫

<p>{{ 'hello' | capitalize }}</p>
  • lower:把值轉成小寫

<p>{{ 'HELLO' | lower }}</p>
  • upper:把值轉成大寫

<p>{{ 'hello' | upper }}</p>
  • title:把值中的每個單詞的首字母都轉成大寫

<p>{{ 'hello' | title }}</p>
  • reverse:字符串反轉

<p>{{ 'olleh' | reverse }}</p>
  • format:格式化輸出

<p>{{ '%s is %d' | format('name',17) }}</p>
  • striptags:渲染之前把值中所有的HTML標簽都刪掉

<p>{{ '<em>hello</em>' | striptags }}</p>
  • truncate: 字符串截斷

<p>{{ 'hello every one' | truncate(9)}}</p>

列表操作

  • first:取第一個元素

<p>{{ [1,2,3,4,5,6] | first }}</p>
  • last:取最后一個元素

<p>{{ [1,2,3,4,5,6] | last }}</p>
  • length:獲取列表長度

<p>{{ [1,2,3,4,5,6] | length }}</p>
  • sum:列表求和

<p>{{ [1,2,3,4,5,6] | sum }}</p>
  • sort:列表排序

<p>{{ [6,2,3,1,5,4] | sort }}</p>

語句塊過濾

{% filter upper %}
    #一大堆文字#
{% endfilter %}
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI