为django中的所有模板加载静态文件

Load static files for all templates in django

django 有没有办法不需要每个模板顶部的 {% load static %}

This question 表示您可以将常见的加载标签分解到设置中,但在这种情况下没有给出您需要的细节。

从 Django 1.9 开始,您可以在 settings.py.

中向 TEMPLATES["OPTIONS"] 添加一个 builtins

对于 Django 2.1+,使用:

'builtins': ['django.templatetags.static']

对于 Django 1.9 - 2.0(这将工作到 2.2,之后它被弃用),使用:

'builtins': ['django.contrib.staticfiles.templatetags.staticfiles']

例如,整个模板设置可能如下所示:

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',
            ],
            'builtins': ['django.templatetags.static'],
        },
    },
]

感谢 的 Django 3 更新。

从 Django 3.0 开始,不推荐使用上一个答案的方法。 (参见:https://docs.djangoproject.com/en/3.0/releases/3.0/#features-removed-in-3-0

现在您需要将以下内容添加到您的模板设置中:

'builtins': ['django.templatetags.static']

这是更新后的模板设置:

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',
            ],
            'builtins': [
                'django.templatetags.static',
            ],
        },
    },
]