默认情况下为所有视图加载Django模板标记库

时间:2009-07-26 16:43:13

标签: django django-templates

我有一个与排版相关的小模板标签库,几乎每个页面都使用它。现在我需要使用

为每个模板加载它
{% load nbsp %}

有没有办法一次性为所有视图和模板“全局”加载它?将加载标记放入基础模板不起作用。

4 个答案:

答案 0 :(得分:70)

add_to_builtins中有django.template.loader个方法。只需传递templatetags模块的名称(作为字符串)。

from django.template.loader import add_to_builtins

add_to_builtins('myapp.templatetags.mytagslib')

现在mytagslib可在任何模板中自动使用。

答案 1 :(得分:29)

它将随着Django 1.9的发布而改变。

自1.9以来,正确的方法是在builtins的{​​{1}}密钥下配置模板标记和过滤器 - 请参阅下面的示例:

OPTIONS

详细说明: https://docs.djangoproject.com/en/dev/releases/1.9/#django-template-base-add-to-builtins-is-removed

答案 2 :(得分:27)

在django 1.7中,只需替换为from django.template.base import add_to_builtins

答案 3 :(得分:5)

在Django 1.9中,有一个libraries字典标签和模板标签模块的点缀Python路径,用于向模板引擎注册。这可用于添加新库或为现有库提供备用标签。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        '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': { # Adding this section should work around the issue.
                'custom_tags' : 'myapp.templatetags.custom_tags',#to add new tags module.
                'i18n' : 'myapp.templatetags.custom_i18n', #to replace exsiting tags modile
            },
        },
    },
]