代码之家  ›  专栏  ›  技术社区  ›  Zack Plauché

加载所有模板和django的静态文件(django 3.0需要更新)[重复]

  •  0
  • Zack Plauché  · 技术社区  · 6 年前

    我有下面的代码块,其中 .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 %} .显然,对于源代码,我需要另一种选择。

    0 回复  |  直到 6 年前
        1
  •  12
  •   Hasan Agha    6 年前

    德扬戈。contrib。静态文件。templatetags在Django的 version 2.1 .现在它已经完全从 version 3 .

    简单地说,替换

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

    具有

    from django.templatetags.static import static
    

    希望这能帮助。。。

        2
  •  5
  •   dirkgroten    6 年前

    你误解了要删除的内容。 django.contrib.staticfiles.templatetags.static() 不赞成支持 django.templatetags.static.static() .如果你使用后者,一切都会如你所愿。

    看到了吗 Django 2.1 release notes ,当它被弃用时。

        3
  •  1
  •   Zack Plauché    6 年前

    以下是我为让我的项目静态文件在Django 3.0上运行所做的工作:

    之前在设置中。我有以下几点:

    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的一个标准部分,因为这在我所有的项目中都是非常必要的,但是,唉,这很管用。