Django无效的块标签:'static'

3
我在base.html的标签中有以下内容。
{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% static "myStyleSheet.css" %}">

我遇到了错误,提示无效的块标签:'static'

在INSTALLED_APPS中,我已经包含了:

'django.contrib.staticfiles',

我已经在 settings.py 文件中包含了:

STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(os.path.dirname(__file__), "static/")

为什么会出现加载错误?

尝试使用单引号 'myStyleSheet.css' 替代双引号。 - John Gordon
错误出现在 HTML <link> 标签的 "{% static " 部分。 - HenryM
我尝试过单引号 - 没有成功。 - HenryM
6个回答

1
很抱歉要说,实际问题在于我的app.yaml文件中指定了一个不同的目录用于静态文件,并且似乎覆盖了其他所有内容。一旦移除,一切都解决了。

0

使用任何一种方式,我都会得到以下信息:"static"不是一个有效的标签库:找不到模板库“static”,已尝试django.templatetags.static、django.contrib.staticfiles.templatetags.static。 - HenryM

0

看起来一切都很好。请检查static这个单词是否只使用了英文字母,可能是因为这个原因。


all in English letters - HenryM

0
你可以改变。
href="{% static "myStyleSheet.css" %}"

href="{% static 'myStyleSheet.css' %}"

myStyleSheet.css中使用单引号。


0
你的 TEMPLATE 设置中有 django.core.context_processors.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',
                'django.core.context_processors.static',
            ],
        },
    },
]

您可以将其添加到相应位置,或在模板中使用{% load static %}

我刚刚尝试添加了它(到settings.py),但这并没有产生任何不同。 - HenryM
你不需要添加整个代码块,只需找到“TEMPLATES”部分,找到“context_processors”部分,并将其添加到最后。 - masnun
我使用了以下代码:TEMPLATE_CONTEXT_PROCESSORS = ( 'django.contrib.auth.context_processors.auth', 'django.core.context_processors.request', 'django.core.context_processors.static', )但是现在出现了不同的错误,即:Module "django.core.context_processors" does not define a "static" callable request processor。 - HenryM
你使用的 Django 版本是什么? - masnun

0

这里有很多答案,但也可以尝试这个。我将描述一切。忘记并清除之前添加的任何内容,只需按照以下提示操作:

1- 在你的settings.pyINSTALLED_APPS中,你应该有
'django.contrib.staticfiles',

还有STATIC_URL = '/static/'。默认情况下,它存在于文件的末尾,但请再次检查。


2- 在 settings.py 文件中,你的 TEMPLATES 应该如下所示

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],
        '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',
                'django.core.context_processors.static',
            ],
        },
    },
]
不要再试图添加这个! 只需要检查错误即可。


3- static文件夹必须位于应用程序目录中,而不是项目的主目录中。

project
    -application
        -migrations
        -static
        -templates

static文件夹中为您的文件创建子目录,例如

project
    -application
        -static
            -css
            -js
            -img
            -....
            -....

并将您的文件放入特定文件夹中


5- 现在在您的HTML文件中首先添加{% load staticfiles %},并且在您需要一个静态文件的任何地方都尝试添加它,如下所示

<link href="{% static "css/myStyleSheet.css" %}" rel="stylesheet">

或者

<link rel="icon" href="{% static "img/favicon.png" %}">

如果你遵循这些提示,一切都应该没问题。再次测试并报告。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接