Django中创建自定义标签与过虑器

Posted remoting-py

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django中创建自定义标签与过虑器相关的知识,希望对你有一定的参考价值。

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中创建自定义标签与过虑器的主要内容,如果未能解决你的问题,请参考以下文章

在片段中创建自定义列表视图时出错所需活动,找到片段

如何在 Django 中创建自定义 403 页面?

在html中创建自定义标签

在 Django Admin 中创建自定义显示字段(models.py 中不存在)

在 Liferay 7 中创建自定义标签库

如何在 PySpark ML 中创建自定义标记器