当前位置: 首页 > 面试题库 >

尝试在开发服务器上提供Django静态文件-找不到

公冶兴文
2023-03-14
问题内容

我已经按照这个问题的说明,文档进行了操作,甚至看过了这个问题,但是到目前为止,我无法使用来获取我的静态文件python manage.py runserver

这些是我的(相关的?)设置:

STATIC_ROOT '/home/wayne/programming/somesite/static'
STATICFILES_DIRS ('/home/wayne/programming/somesite/static/styles',
                  '/home/wayne/programming/somesite/static/admin')

在我的urls.py中:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
# The rest of my urls here...
if settings.DEBUG:
    urlpatterns += staticfiles_urlpatterns()

我的base.html中有以下代码

    <link rel="stylesheet" type="text/css" href="{% static "styles/main.css" %}">
    {% block styles %}
    {% for sheet in styles %}
    <link rel="stylesheet" type="text/css" href="{% static sheet %}">
    {% endfor %}

我保证我不会产生幻觉:

(.env)wayne:~/programming/somesite/static$ pwd 
/home/wayne/programming/somesite/static 
(.env)wayne:~/programming/somesite/static$ ls 
admin  styles

但是,当导航到http://localhost:8000/我的站点时缺少其样式表,并且当我转到时,http://localhost:8000/static/styles/main.css我会'styles/main.css' could not be found尝试导航到localhost:8000/static/,或者localhost:8000/static/styles它告诉我不允许目录索引。

我在这里想念什么?


问题答案:

Django对静态文件的处理仍然有些混乱,特别是在相关设置的命名方面。

简短的答案是移动您的静态文件。代替

/home/wayne/programming/somesite/static

把它们放进去

/home/wayne/programming/somesite/yourapp/static

(其中“ yourapp”显然是您的主应用程序的名称)。

更长的答案是,我认为您对各种设置感到困惑(可以理解)。STATIC_ROOT 是指位置 在您的静态文件应该结束了
运行后manage.py collectstaticcollectstatic在本地开发时,您不需要此集合(因为您实际上不需要)。无论哪种方式,STATIC_ROOT都应始终引用一个空目录。

您的STATICFILES_DIRS设置几乎可以用,只是您已经告诉Django有两条路径可以找到静态文件

/home/wayne/programming/somesite/static/styles
/home/wayne/programming/somesite/static/admin

所以当你做的{% static "styles/main.css" %}时候会寻找

/home/wayne/programming/somesite/static/styles/styles/main.css
/home/wayne/programming/somesite/static/admin/styles/main.css

并且显然不会找到它们。是什么 力量 工作

STATICFILES_DIRS = ('/home/wayne/programming/somesite/static',)

但不需要这样做,因为您可以依靠django.contrib.staticfiles.finders.AppDirectoriesFinder(在默认的STATICFILES_FINDERS中)并将静态文件移动到应用程序目录中。

希望这能使事情顺利一些。



 类似资料:
  • 问题内容: 这个问题已经被回答了好几次了,我已经看到了几乎所有相关的帖子,但是无法加载CSS文件。我在我的项目中有以下结构:中,我有以下代码: 在urls.py中,我有以下代码: 我在模板中使用它 我在做什么错?我应该做什么?例如应该在中添加任何内容?或在的设置中?请假设我是一个绝对的初学者。我真的需要一个答案。谢谢。 问题答案: 什么都不做的装饰器类如下所示: 然后您可以正常应用它:

  • 问题内容: 我正在使用,我的django应用的结构如下 的是 在我尝试使用它为: 但是它没有加载并给出错误 我跑去收集所有静态文件。 为什么要加载CSS文件?是否缺少任何配置? 请提出建议。 问题答案: 根据文档正确的方式来加载静态文件是 这会工作

  • 我是新来的Webpack和运行的解决方案基于Angulal-种子为Angulal2使用Webpack和Webpack开发服务器。 在本地,一切都正常运行,但我找不到任何构建的静态文件被保存在哪里。例如,我在本地运行站点,文件main.bundle.js在配置的端口3000上从本地主机下载,但根据Windows资源管理器的“搜索”功能,该文件在光盘上的任何位置都不存在。 Web包开发服务器使用以下输

  • 问题内容: 让我感谢Stack Overflow社区的人们帮助我解决了各种Django和Apache(带有mod_wsgi)错误。到目前为止,我已经问了5个相关的问题,现在我越来越接近在生产站点上发布内容了! 我读到有关,(很快就会过时),并在Apache配置中设置。我试图逐个测试每个解决方案,但是我什么也做不了。 这是我的管理网站现在的样子 我也有一个奇怪的情况,那就是 任何子 域都可以在我的服

  • 问题内容: 从主题上类似标题的数量来看,这似乎引起了很多混乱,但是尝试使用django开发服务器尝试在静态文件中可以找到的所有内容,我几乎放弃了希望! 因此,我的静态文件从C:/ Users / Dan / seminarWebsite / static /提供,其中我有用于图像,css等的子文件夹。 设置: 静态文件应用程序也处于活动状态。 网址: 模板: 但是,只有一个断开的链接出现在此地址处

  • 问题内容: 有没有一种简单的方法可以关闭Django开发服务器中的静态文件缓存? 我正在使用标准命令启动服务器: 我已配置为从Django项目的目录提供静态文件。我还有一个中间件类,该类将标头设置为开发用,但是这似乎只会影响不在目录中的URL 。 问题答案: 假设您正在使用,它看起来并不像- 但是编写自己的仅调用视图,添加Cache-Control标头应该非常容易。