在django

时间:2018-02-05 10:54:06

标签: django django-templates django-staticfiles

我有一些静态文件在所有应用程序中都会保持通用,而且我还有一些特定于某些特定应用程序的静态文件。现在在我的一个应用程序中,我想使用项目级别和应用程序级别的静态文件,但这似乎不起作用。 以下代码部分来自settings.py

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "homepage","static"),
    os.path.join(BASE_DIR, "landing_page","static"),
    os.path.join(BASE_DIR, "static"),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

我使用了python manage.py collectstatic 并返回了一条警告,该警告类似于找到了另一个带有目标路径的文件' homepage \ css \ style.css'。它将被忽略,因为只收集第一个遇到的文件。如果这不是您想要的,请确保 每个静态文件都有一个唯一的路径。 尽管有上述警告,我仍然可以在我的根目录中的 staticfiles 文件夹中获得项目级别和应用程序级别的静态文件。当我在模板中使用它时,项目级静态文件被加载,而应用程序级静态文件(只是一个CSS文件)不会被加载。以下是我尝试加载CSS文件的方法。

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

chrome的开发人员工具也没有在加载文件列表中显示应用级CSS文件,这显然意味着该文件无法加载。

2 个答案:

答案 0 :(得分:1)

您需要遵循模板原则,即将您的应用专用文件放在具有应用名称的另一级目录中 - 例如/project/homepage/static/homepage/css...。现在您的链接将起作用(使用您现有的设置)。

但是,除非您实际上是独立分发您的应用程序,否则我认为这不是一种有用的组织方式。只需使用项目级静态目录,并在其中包含特定于应用程序的目录 - /project/static/homepage/css...。那么你只需要STATICFILES_DIRS中的一个目录。

答案 1 :(得分:0)

我绝对对不起大家。刚刚在我自己的代码中看到了一个明显的错误该错误现已解决。谢谢!