Django----(五)自定义过滤器

本文详细介绍了如何在Django中创建和使用自定义过滤器、标签及包含标签。首先,从新建common应用包开始,创建templatetags目录并编写过滤器函数,然后在HTML中调用。接着,探讨了自定义标签的实现,包括从context中取参数和传入参数的方式。最后,讲解了如何利用包含标签优化重复的HTML内容,提高代码复用性。
摘要由CSDN通过智能技术生成

1.自定义过滤器

1.1主目录新建common包

新建文件夹common,在common文件夹下建__init__.py文件。在common文件夹下新建文件夹templatetags,在templatetags文件夹下新建__init__.py文件。

1.2 注册APP

在settings.py文件中注册名为common的APP。
INSTALLED_APPS=[
‘common’,
]

1.3编辑函数并注册

在templatetags下新建self_defined.py文件

from django import template

register = template.Library()

@register.filter
def mylower(attr):
	return attr.lower()

1.4在html文件中使用

在html文件开头载入函数文件

{% load self-defined %}

{{ str|mylower }}

2.自定义标签

2.1直接从context中取参数,需要在注册时加入takes_context=True

from django import template
from datetime import datetime

register = template.Library()

@register.simple_tag(takes_context=True)
def current_time(context):
    str1 = context.get('ts')
    return datetime.now().strftime(str1)

视图函数

ts = '%Y-%m-%d %H:%M:%S %A'
def test(request):
    return render(request,'blog/test.html',
                  context={'ts':ts})

html文件中调用

{% current_time %}

2.2在html中使用参数

from django import template
from datetime import datetime

register = template.Library()

@register.simple_tagtr
def current_time(attr):
    return datetime.now().strftime(attr)

视图函数

ts = '%Y-%m-%d %H:%M:%S %A'
def test(request):
    return render(request,'blog/test.html',
                  context={'ts':ts})

html文件中调用

{% current_time  ts%}

3.包含标签

当html页面中存在大量格式类似但内容不同的标签组时,可以使用包含标签代替

3.1 编辑标签内容

新建tags.html文件

<ul>
	{% for i in choices %}
		<li>{{ i }}</li>
	{% endfor %}
</ul>

3.2 定义函数并注册

@register.inclusion_tag('tag.html')
def show(attr):
	return {'choices':attr}

3.3 视图函数

def test(request):
    return render(request,'blog/test.html',
                  context={                             
                           'xx':['taka', 'xiaopo', 'nanbei', 'juhao']
                           })

3.4 html页面

{% load self-defined %}    开头

{% show xx %}

3.5 直接接受context中参数

@register.inclusion_tag('tag.html',takes_context=True)
def show(context):
attr = context.get(‘xx’)
	return {'choices':attr}

页面中

{% load self-defined %}    开头

{% show %}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值