4

我有以下代码块,其中.css返回了相应的文件路径。
它是Theme-Class允许用户通过配置文件视图中的按钮更改网站主题(深色和浅色)的一部分。

def link(self) -> str:
        """
        Returns the link where the CSS file for this theme is located
        """
        return static('app_shared/colors_%s.css' % self.name())

在 HTML 模板中发生的相同问题可以通过更改{% load staticfiles %}{% load static %}. 显然,对于源代码,我需要另一种选择。

4

3 回答 3

9

django.contrib.staticfiles.templatetags 在 Django 的2.1 版本中被弃用。现在它已从版本 3中完全删除。

很简单,更换

from django.contrib.staticfiles.templatetags.staticfiles import static

from django.templatetags.static import static

希望这会有所帮助...

于 2020-01-28T07:49:41.243 回答
4

您误解了要删除的内容。django.contrib.staticfiles.templatetags.static()已弃用,取而代之的是django.templatetags.static.static(). 如果你使用后者,一切都会如你所愿。

请参阅Django 2.1 发行说明,何时弃用。

于 2019-12-04T10:50:45.390 回答
1

这是我为使我的项目静态文件在 Django 3.0 上工作所做的工作:

以前在 settings.py 我有以下内容:

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.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',  # <------------ New way
            ]
        },
    },
]

它再次起作用。

我有点希望这只是 Django 的一个标准部分,因为这在我所有的项目中都是非常必要的,但是,唉,这行得通。

于 2019-12-14T17:30:00.620 回答