【发布时间】:2015-05-17 04:09:08
【问题描述】:
我的项目结构
|- myProject
|- manage.py
|- myProject
|- settings.py
|- static // This is my STATIC_ROOT
|- myApp
|- static // This is where I edit and save my static files
所以我运行 collectstatic 命令。我的 css/js 文件被收集(并压缩为单个文件)到 STATIC_ROOT 目录(myProject/myProject/static)中。到目前为止一切顺利。
第一个问题:我如何为他们服务?
我尝试调用 http://127.0.0.1:8000/static/css/styles.css,但它返回 404 文件未找到错误。
我尝试在 STATICFILES_DIRS 中添加 STATIC_ROOT,但随后出现错误:
STATICFILES_DIRS 设置不应包含 STATIC_ROOT 设置。
第二个问题:Django 能否提供“项目范围”的静态文件?
我知道您可以通过调用“/static/myApp/my-static-file.css”来提供“应用程序范围”的静态文件。 但是 Django 是否像了解每个应用程序内的静态文件夹一样了解 myProject/myProject/static?还是需要明确说明?
我读过一些博客/论坛帖子说您需要将 urls.py 更改为,但我尝试过,但没有成功。我必须这样做吗?
我发现在 Django 的文档中很难找到有关静态文件的信息,我现在很困惑。
编辑:现在我真的很困惑:我尝试设置 PIPELINE_ENABLED = False,现在这个 url 有效。 http://127.0.0.1:8000/static/css/styles.css 但它没有帮助,因为当 PIPELINE_ENABLED 为 False 时,它不会尝试调用压缩的 css,而是单独调用所有文件。
【问题讨论】:
-
您如何为 django 提供服务(例如,根据您使用的 URL,我猜测是通过 runserver,而不是通过 apache/nginx/etc。)您是否在调试模式下运行?
-
是的,我正在使用 runserver 运行 django。是的,我有 DEBUG = True
-
如果您正在运行 django 服务器,它将从 static_root 服务(假设一切都已正确配置)。 collectstatic 用于在反向代理可以找到它们的地方获取所有静态文件。您需要为此配置反向代理。 Django 服务器不是为在生产环境中运行而设计的,因此在发布站点时需要额外的配置。
标签: python django static django-pipeline collectstatic