【问题标题】:Django doesn't see some static files in developmentDjango 在开发中看不到一些静态文件
【发布时间】:2017-10-11 04:58:51
【问题描述】:

我遇到了 django 在开发过程中不提供某些静态资源的问题。这是一个非常奇怪的问题。

这就是我的静态目录的相关部分现在的样子:

site_media
└── static
    ├── css
    │   ├── public.css
    │   ├── site-ada8eab0af.css

现在这是我的 staticfiles 目录,当我运行 manage.py collectstatic 时,东西已从我的静态目录正确导入。

我的模板中有两行:

<link href="{% static 'css/site-ada8eab0af.css' %}" rel='stylesheet' />
<link href="{% static 'css/public.css' %}" rel="stylesheet" />

这些在渲染输出中产生这两行:

<link href="/site_media/static/css/site-ada8eab0af.css" rel='stylesheet' />
<link href="/site_media/static/css/public.css" rel="stylesheet" />

当我转到第一个链接时,它工作正常。但是,当我转到 public.css 链接时,我收到一个 404 错误,上面写着'css/public.css' could not be found。我使用的完整链接是http://localhost:8000/site_media/static/css/public.css

什么可能使它能够提供这些文件之一,但不能提供另一个?

【问题讨论】:

  • 尝试重命名它,避免它可能是 Django 内部处理中的保留关键字
  • 您得到 404 的事实使这不太可能发生,但请尝试禁用缓存。
  • 重命名它没有做任何事情,但禁用缓存确实可以。如果你想把它写成 Sahutchi 的答案,我会接受的。也许你可以解释一下当文件以前从未存在过缓存时会导致这种情况的原因。

标签: python django


【解决方案1】:

尝试将以下内容添加到您的设置中

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Django 不提供静态文件,除非你也告诉它。 (https://docs.djangoproject.com/en/dev/howto/static-files/#serving-static-files-in-development)

也许两个链接实际上都返回 404,而顶部的链接只是被缓存了?

【讨论】:

  • 设置文件中已经有urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)。那是一回事。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-22
  • 2012-02-29
  • 2013-05-21
  • 2020-06-14
  • 1970-01-01
  • 2013-12-22
相关资源
最近更新 更多