自定义模板内可用tags函数
1、在apps文件夹下新建一个文件夹,取名为templatetags(可以随便取名),并在该文件夹下新建__init__.py
文件。
2、新建一个py文件,比如template.py
, 放置在刚刚创建的templatetags文件夹下,目录树如下
├templatetags
│ __init__.py
│ template.py
3、在template.py
中编写tags函数,如下:
from django import template
# 创建模板库的实例
register = template.Library()
# 注册过滤器 hello为自己编写的tags函数
@register.filter(name="hello")
def hello(arg1: str):
return 'hello' + arg1
4、在settings.py
中配置过滤器:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 这里注册该app
'apps.templatetags.template',
'MainWeb',
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
# 写入libraries,格式为:<"过滤器名称": "位置">
'libraries': {
"hello": "apps.templatetags.template",
},
},
},
]
5、使用tags过滤器
<!-- 使用load 加载tags -->
{% load hello %}
<!-- 使用tags 用"|"来调用hello -->
<p>名字:{{ name|hello }}</p>
<!-- 调用hello时传入另一个字符串参数Jack -->
<p>名字:{{ name|hello:Jack }}</p>