91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Django 模板之自定義函數

發布時間:2020-08-05 15:02:11 來源:網絡 閱讀:5998 作者:beanxyz 欄目:開發技術

我們已經知道了在Django的模板里面,可以使用for循環,if判斷,接收后臺的數據,還可以通過 extends和include來重復使用其他的模板,這一節來學習如何自定義函數。


模板里面有兩種方式來自定義函數,分別是simple_tag和 filter方式。


simple_tag:

1 首先在app下創建一個templatetags的目錄,然后在這個目錄下面創建一個py文件,注意這個目錄的名字是固定的


Django 模板之自定義函數


2.  然后在這個py文件里面,導入模板類,實例化一個對象register,然后執行一個裝飾器simple_tag, 裝飾器下面是自己的函數


請注意,除了自己寫的函數,其余所有這些參數的名字都是固定的!

__author__ = 'Administrator'
from django import template
from django.utils.safestring import mark_safe
register = template.Library()
@register.simple_tag
def addnum(a1,a2,a3):
    return a1+a2+a3


3. 和數據庫的操作一樣,需要在settings.py里面注冊這個app

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01',
]


4. 在要使用的模板文件里面頂部導入我們寫的python文件, 就可以調用了。調用的時候空格距離無所謂

例如

{% load calculation %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

    <p>
        {% addnum  2  5  6 %}
    </p>
  
</body>
</html>

Django 模板之自定義函數


第二種定義函數的方式叫做filter,這個和Django自帶的函數使用方式非常類似。

首先看幾個自帶的例子


比如我可以直接傳入一個字符串,然后通過管道符號,后面跟一個字符串的函數讓他改變大小寫或者切片

    <p>
         {{ name }}
    </p>
    <p>
        {{ name|upper }}
    </p>
    <p>
        {{ name|truncatechars:"10" }}
    </p>


如果希望使用類似的格式來調用自己的函數,我們可以使用filter


filter的步驟和simple_tag非常類似。 首先仍然是創建 templatetags目錄,然后創建一個py文件,然后實例化一個register對象。區別在于裝飾器不同了,這次是@register.filter


比如

__author__ = 'Administrator'
from django import template
from django.utils.safestring import mark_safe
register = template.Library()
@register.simple_tag
def addnum(a1,a2,a3):
    return a1+a2+a3
@register.filter
def mulnum(a1,a2):
    return a1*a2


接下來步驟一樣,需要在settings.py里面注冊app,然后模板文件load這個py文件,調用的時候不是{% 函數名 參數1 參數2 參數3%} 的格式 而是 {{ 參數1 | 函數名:"參數2"}}

{% load calculation %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <p>
        {% addnum  2  5  6 %}
    </p>
    <p>
         {{ name }}
    </p>
    <p>
        {{ name|upper }}
    </p>
    <p>
        {{ name|truncatechars:"10" }}
    </p>
    {{ 30|mulnum:30 }}
</body>
</html>


結果如下


Django 模板之自定義函數


那么,除了格式的區別,simple_tag和filter還有什么區別呢? 


  • simple_tag可以使用任何個數的參數,而filter只能最多2個參數

  • simple_tag不能作為if條件,而filter可以

  • simple_tag后面的參數直接的空格隨意, filter不能有空格

向AI問一下細節

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

AI

舞阳县| 施甸县| 会同县| 东至县| 马龙县| 晋中市| 务川| 吴旗县| 台南市| 和田县| 鲁甸县| 麟游县| 光泽县| 宣恩县| 马山县| 承德县| 济源市| 清水河县| 全南县| 稷山县| 汨罗市| 同江市| 旬邑县| 汝南县| 拉萨市| 阿拉尔市| 英超| 陇南市| 云南省| 克东县| 神池县| 南通市| 舒城县| 于都县| 闵行区| 呼和浩特市| 洛南县| 应城市| 阿拉善左旗| 包头市| 华阴市|