日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python模板的使用詳細講解_python

作者:許小許520 ? 更新時間: 2022-11-24 編程語言

一 模板語法傳值

方式一:

# urls.py
path('template', views.template)
# views.py
def template(request):
    name = "jasper"
    age = "18"
    return render(request, 'template.html', {"name": name, "age": age})

?<p>姓名:{{ name }} ?年齡:{{ age }}</p>

方式二:關鍵字locals

def template(request):
    name = "jasper"
    age = "18"
    return render(request, 'template.html', locals())

傳值范圍:

  • 基本數據類型直接傳遞使用。
  • 函數名的傳遞會自動加括號執行并展示函數返回值(如果函數需要參數,則不會執行,也不會展示),模板語法不支持有參函數。
  • 類名的傳遞也會自動加括號產生對象。
  • 對象的傳遞則直接引用。

二 過濾器

add

{{ value|add:"2" }}

如果 value 是 4,那么輸出將是 6。

這個過濾器將首先嘗試將兩個值強制轉為整數。如果失敗了,它將嘗試將兩個值加在一起。這對某些數據類型(字符串、列表等)有效,而對其他類型則失敗。如果失敗,結果將是一個空字符串。

capfirst

{{ value|capfirst }}

將值的第一個字符大寫。如果第一個字符不是字母,這個過濾器就沒有效果。

如果 value 是 “django”,則輸出為 “Django”。

center

在給定寬度的字段中使數值居中。

"{{ value|center:"15" }}"

如果 value 是 “Django”,輸出將是 " Django "。

cut

從給定的字符串中刪除參數的所有值。

{{ value|cut:" " }}

如果 value 是 “String with spaces”,輸出將是 “Stringwithspaces”。

date

根據給定的格式設置日期。

例子:

{{ value|date:"D d M Y" }}

如果 value 是一個 datetime 對象(例如,datetime.datetime.datetime.now() 的結果),輸出將是字符串 ‘Wed 09 Jan 2008’。

傳遞的格式可以是預定義的 DATE_FORMAT、DATETIME_FORMAT、SHORT_DATE_FORMAT 或 SHORT_DATETIME_FORMAT, 或者是使用上表中顯示的格式指定器的自定義格式。請注意,預定義的格式可能會根據當前的 locale 而有所不同。

假設 USE_L10N 為 True 和 LANGUAGE_CODE 為例如 “es”,那么對于:

{{ value|date:"SHORT_DATE_FORMAT" }}

輸出將是字符串 “09/01/2008” (Django 自帶的 “SHORT_DATE_FORMAT” 格式指定符是 “d/m/Y”)。

當不使用格式字符串時,使用 DATE_FORMAT 格式指定器。假設設置與前一個例子相同:

{{ value|date }}

輸出 9 de Enero de 2008 (DATE_FORMAT’ 格式指定符為 r’j\d\e F\d\e Y’)。“d” 和 “e” 都是反斜杠,因為否則每一個都是一個格式字符串,分別顯示日期和時區名稱。

你可以將 date 與 time 過濾器結合起來,以呈現一個 datetime 值的完整表示。例如:

{{ value|date:"D d M Y" }} {{ value|time:"H:i" }}

default

如果值為 False,則使用給定的默認值。否則,使用該值。 例子:

{{ value|default:"nothing" }}

如果 value 是 “” (空字符串),輸出將是 nothing。

更多內置過濾器請查看官方文檔:https://docs.djangoproject.com/zh-hans/4.1/ref/templates/builtins/#ref-templates-builtins-filters

三 標簽

參考官方文檔:https://docs.djangoproject.com/zh-hans/4.1/ref/templates/builtins/#ref-templates-builtins-filters

四 自定義模板標簽和過濾器

Django 模板語言包含了很多 內置 tags 和 filters,設計目的是滿足應用需要占位邏輯需求。極少情況下,你可能發現需要的功能未被核心模板集覆蓋。你能通過 Python 代碼自定義 tags 和 filters 擴展集成模板引擎,通過 {% load %} 標簽使其可用。

該應用應包含一個 templatetags 目錄,與 models.py, views.py 等同級。若該目錄不存在,創建它——不要忘了用 init.py 文件確保目錄被視作一個 Python 包。

自定義的 tags 和 filters 會保存在模塊名為 templatetags 的目錄內。模塊文件的名字即稍候你用來加載 tags 的名字,所以小心不要采用一個可能與其它應用自定義的 tags 和 filters 沖突的名字。

為了使 {% load %} 標簽生效,包含自定義標簽的應用必須包含在 INSTALLED_APPS 中。這是個安全特性:它允許你在一個主機上持有多個模板庫,而不是讓每個 Django 安裝都能訪問所有的庫。

我們并未限制放入 templatetags 包中的模塊數量。只需牢記 {% load %} 語句會加載名字指定 Python 模塊的 tags/filters,而不是應用。

要成為一個可用的 tag 庫,模塊必須包含一個名為 register 的模塊級變量,它是一個 template.Library 實例。所有的 tags 和 filters 均在其中注冊。所以,在模塊的開始,輸入以下內容:

from django import template
register = template.Library()

4.1 自定義過濾器

@register.filter(name='myfilter')
def my_add(a, b):
    return a + b

4.2 自定義標簽函數

@register.simple_tag(name='mt')
def func(a, b, c, d):
    return a + b + c + d

4.3 自定義inclusion_tag

@register.inclusion_tag(filename='it.html')
def index(n):
    html = []
    for i in range(n):
        html.append('第%s頁'%i)
    return locals()

參考官方文檔:https://docs.djangoproject.com/zh-hans/4.1/howto/custom-template-tags/

五 模板的繼承

# 在html頁面打上標記
{% block 名字 %}
?? ?html標簽
{% endblock %}

# 擴展html界面
{% extends 'html文件' %}

{% block 名字 %}
?? ?html標簽
{% endblock %}

# 一般情況下模板中至少應該有三個區域
css、js、content

子板中還可以使用母板的內容 {{ block.super }}

六 模板的導入

將html頁面的某個部分當做模塊的形式導入使用

{% include 'menu.html' %}

原文鏈接:https://blog.csdn.net/weixin_68531269/article/details/126668940

欄目分類
最近更新