django不会从statifiles_dirs加载静态文件

时间:2018-09-19 10:14:47

标签: python css django styles django-staticfiles

我的style.css被放置在appname/static/appname/中。

我的settings.py具有以下代码:

STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static/"),
    )

然后在我的base.html中像这样加载它:

{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'appname/style.css' %}">

但是样式没有加载。 如果删除STATICFILES_DIRS并将STATIC_URL = '/static/'更改为STATIC_URL = '/static/appname/',它会很好地工作,但是对于以后再将其他任何应用程序添加到项目中的情况,我认为这不是最佳实践。我可能做错了什么?

3 个答案:

答案 0 :(得分:0)

在{%static'appname / style.css'%}中删除“ appname”,您不得将其放置在此处,因为python自动知道文件位于哪个应用程序中,它会从请求中获取应用程序名称

答案 1 :(得分:0)

只需改变一件事,

STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)

它将在您的应用程序内的静态文件夹中搜索。另外,如果您要添加特定的目录,

STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"), '/your specific directory/',
)

您可以从此处直接添加特定的文件名,然后djnago将在该特定目录中搜​​索。

答案 2 :(得分:0)

默认情况下,django从应用程序的目录中选择static目录。因此,如果您的静态目录位于应用程序目录中,则无需指定STATICFILES_DIRS。 现在/static/将指向应用程序静态目录中的文件和目录。要引用您的CSS文件,请使用

{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'appname/style.css' %}">