1. 程式人生 > >Django中創建自定義標簽與過慮器

Django中創建自定義標簽與過慮器

IT choices filters AS value ret urn gist doctype

1.首先在app中創建templatetags目錄(註意必須使用該名字,否則系統找不到自定義的標簽),然後創建python文件common_extrgs.py.

common_extrgs.py:

from django import template

#創建template.Library()實例
register = template.Library()

#使用@register.filter()註冊成自定義過濾器
@register.filter()
def mycut(value,arg):
return value.replace(arg,"---")
#
# register.filter(‘mycut‘,mycut)


from django.template.defaultfilters import stringfilter

#自定義過濾器,並使用stringfilter裝飾器過濾成字符型
@register.filter
@stringfilter
def mylower(value):
return value.lower()

from datetime import datetime

#簡單標簽
@register.simple_tag(takes_context=True)
def current_time(context):
tm = context[‘format_string‘]
return datetime.now().strftime(tm)


#包含標簽
@register.inclusion_tag(‘book/show_tag.html‘,takes_context=True)
def show_results(context):
tm = context[‘li‘]
tm2 = context[‘l2‘]
return {‘choices‘:tm + tm2}

#分配標簽
@register.assignment_tag(takes_context=True)
def current_time1(context):
tm = context[‘format_string‘]
return datetime.now().strftime(tm)



2.包含標簽中使用register.inclusion_tag把show_tag.html文件包含進來,
show_tag.html內容如下:
<ul>
{% for i in choices %}
<li>{{ i }}</li>
{% endfor %}
</ul>


3.模板文件中使用{% load common_extras %}把前面自定義的common_extras載入到模板文件中.
模板文件內容如下:

{% load common_extras %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% show_results %}
{{ ss|mycut:‘ ‘ }}<br>
{{ mm|mylower }}<br>
{% current_time %}<br>
{% current_time1 as ctime %}<br>
{% show_results %}<br>
{{ ctime }}
</body>
</html>

4.使用views.py文件中視圖進行渲染
views.py:
def test(request):
return render(request,‘book/ss.html‘,{‘ss‘:‘THIS IS MY NAME‘,
‘mm‘:123,
‘format_string‘:‘%Y-%m-%d %H:%M:%P‘,
‘li‘:[‘python‘,‘java‘,‘c++‘],
‘l2‘:[‘c#‘,‘iso‘,‘android‘]
})
 


 

Django中創建自定義標簽與過慮器