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




django模板字典 django模板while (5)

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

{% load nbsp %}

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


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


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

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

from django.template.loader import add_to_builtins

add_to_builtins('myapp.templatetags.mytagslib')

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


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


Employees.objects.values_list('eng_name', flat=True)

这将创建所有eng_name的平面列表。 如果你想要每行多个字段,你就不能做一个平面列表:这将创建一个元组列表:

Employees.objects.values_list('eng_name', 'rank')




django django-templates