中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

django如何自定義模板標簽

發布時間:2021-07-19 10:12:12 來源:億速云 閱讀:109 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“django如何自定義模板標簽”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“django如何自定義模板標簽”這篇文章吧。

代碼布局

自定義模板標簽必須位于django的某個應用中

該應用中新建templatetags目錄,和models.py,views.py同一級別

結構如下:

polls/
  __init__.py
  models.py
  templatetags/
    __init__.py
    poll_extras.py
  views.py

模板中調用標簽:

{% load poll_extras %}

為了讓load標簽工作,該標簽所在應用必須在INSTALLED_APPS中

templatetags里有多少個模塊沒有限制,因為{% load %}會載入給定模塊名的標簽過濾器,而不是應用的名稱

為了成為一個可用的標簽庫,必須注冊,放在模塊頂部

from django import template
register=template.Library()

自定義標簽過濾器

自定義過濾器就是一個帶有一個或兩個參數的Python 函數:

  • (輸入的)變量的值 —— 不一定是字符串形式。

  • 參數的值 —— 可以有一個初始值,或者完全不要這個參數。

例如,在{{ var|foo:"bar" }}中,foo過濾器應當傳入變量var和參數 "bar"。

def cut(value, arg):
  """Removes all values of arg from the given string"""
  return value.replace(arg, '')

下面是這個過濾器應該如何使用:

{{ somevariable|cut:"0" }}

大多數過濾器沒有參數。在這種情況下,你的函數不帶這個參數即可。示例︰

def lower(value): # Only one argument.
  """Converts a string into all lowercase"""
  return value.lower()

注冊自定義過濾器

方法1:

register.filter('cut', cut)
register.filter('lower', lower)

Library.filter()方法需要兩個參數:

過濾器的名稱(一個字符串對象)

編譯的函數 – 一個Python函數(不要把函數名寫成字符串)

方法2:register.filter()用作裝飾器

@register.filter(name='cut')
def cut(value, arg):
  return value.replace(arg, '')

@register.filter
def lower(value):
  return value.lower()

下邊是實例:

django如何自定義模板標簽

my.pyfrom django import template
register=template.Library()
@register.filter
def myadd(param):
  res=param+"************************"
  return res
@register.filter
def mycul(param,num):
  res=param*num
  return res
views.pydef tags(request):
  print("hello")
  return render(request,'mytags.html')
tags.html<body>
  {% load my %}
  {{ 'tags'|myadd }}

  {{ 'tags'|mycul:5 }}
</body>

結果:

tags************************ tagstagstagstagstags

以上是“django如何自定義模板標簽”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

平南县| 桦甸市| 普陀区| 象州县| 蓝山县| 伊川县| 沙雅县| 德格县| 睢宁县| 岳普湖县| 古蔺县| 阿拉善左旗| 隆林| 象山县| 吴堡县| 阿荣旗| 高唐县| 平塘县| 论坛| 兴化市| 临沭县| 雷山县| 定西市| 抚顺市| 辉南县| 逊克县| 武宁县| 安吉县| 松原市| 那曲县| 雅安市| 舞阳县| 大丰市| 深州市| 丹阳市| 永丰县| 拉萨市| 竹北市| 偃师市| 安吉县| 根河市|