Django自定義模板函數


1.模板語言的幫助方法:

  {{ item.event_start|date:"Y-m-d H:i:s"}}    #轉換日期
  {{ bio|truncatewords:"30" }}         #字符串切片
  {{ my_list|first|upper }}              #第一位  轉換為大寫
  {{ name|lower }}                #轉換為小寫

通過封裝python的方法來實現其功能

示例:

views.py:

def simpletag(request):
    name='AKHFDAO'
    return render(request,'simpletag.html',{'name':name})

html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p>{{ name }}</p>
    <p>{{ name|lower }}</p>
</body>
</html>

 

2.自定義simple_tag的步驟:

  一:定義simple_tag:

  (1)在app目錄里創建templatetags目錄(名字唯一)

  (2)在templatetags下創建任意py文件(xx.py)

  (3)創建templa對象 register

  (4)編寫函數

from django import template

register=template.Library() #對象名必須為register
@register.simple_tag()
def funcname(a1,a2):
    return a1+a2

  二:使用simple_tag:

  (1)settings.py文件里注冊app

INSTALLED_APPS

找到此列表,添加app名

  (2)在HTML文件的頂部load你的py文件(上面步驟2)

  (3)調用,使用{% 函數名 arg1 arg2 %} 

{% load xx %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>{% funcname "succ" "ess1" %}</p>
</body> </html>

 3.自定義filter的步驟:

  在上面的配置基礎上:

@register.filter()
def funcname2(a1,a2):    #最多只能有兩個參數
    return a1+a2

  HTML:

  {{ arg1|函數名:"arg2,arg3" }}   {{ arg1|函數名:數字 }} 

{% load xx %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p>{{ 'succ'|funcname2:'ess2' }}</p>
</body>
</html>

 


免責聲明!

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



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