我有一些静态文件在所有应用程序中都会保持通用,而且我还有一些特定于某些特定应用程序的静态文件。现在在我的一个应用程序中,我想使用项目级别和应用程序级别的静态文件,但这似乎不起作用。 以下代码部分来自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文件,这显然意味着该文件无法加载。
答案 0 :(得分:1)
您需要遵循模板原则,即将您的应用专用文件放在具有应用名称的另一级目录中 - 例如/project/homepage/static/homepage/css...
。现在您的链接将起作用(使用您现有的设置)。
但是,除非您实际上是独立分发您的应用程序,否则我认为这不是一种有用的组织方式。只需使用项目级静态目录,并在其中包含特定于应用程序的目录 - /project/static/homepage/css...
。那么你只需要STATICFILES_DIRS中的一个目录。
答案 1 :(得分:0)
我绝对对不起大家。刚刚在我自己的代码中看到了一个明显的错误该错误现已解决。谢谢!