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



Answers

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

从1.9开始,正确的方法是在OPTIONS builtins键下配置模板标签和过滤器 - 请参阅下面的示例:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'builtins': ['myapp.builtins'],
        },
    },
]

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

Question

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

{% load nbsp %}

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




在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
            },
        },
    },
]



Related