2012-07-29 212 views
1

我遇到了这里的障碍,Django文档和previous stack overflow questions没有帮助。我已经阅读了static files section in the docs,我似乎正在django.contrib.staticfiles做正确的事情。服务静态文件错误“目录索引不允许在这里”

所以我试图显示我的静态文件,我有点困惑,我做错了什么。当我访问我的localhost:8000/static/网站时,出现404错误,“目录索引不允许在这里”。信息。我已经设置了我的STATIC_URL' = '/static/',我有一个静态目录,其中的文件位于我的newsletter应用程序中,该应用程序位于INSTALLED_APPS设置下。我甚至尝试在STATICFILES_DIR设置中放置完整路径,但这不起作用。

我见过人们试图修改STATIC_ROOT设置,但如果我错了,纠正我,我认为这是在开发服务器上的不好的做法。任何线索?谢谢。

回答

2

讨厌回答我自己的问题,但一个比我更多的django经验的好友指出我正确的方向。我将我的静态文件夹移动到manage.py所在的外部目录中。将我的STATIC_URL更改为/static,然后将urlpatterns += staticfiles_urlpatterns()添加到我的urls.py文件中。现在一切正常!

我还是有点困惑,因为我认为1.4我可以在我的应用程序下添加静态目录并让它工作得很好......无论如何感谢所有的反应!

+0

这很奇怪。你是否手动将文件移动到外部目录?你应该尝试使用'python manage.py collectstatic'命令来做到这一点https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#django-admin-collectstatic – Intenex 2012-07-30 00:22:42

+0

是的 - 我手动移动它们。谢谢!我将不得不在下次尝试。 – 2012-07-30 13:51:53

+0

奇怪的是你设置STATIC_URL = /静态,它的工作原因是与Django-1。8它抱怨如果STATIC_URL不以/:django.core.exceptions.ImproperlyConfigured结束:如果设置,STATIC_URL必须以斜杠结尾 – Divick 2015-11-18 08:20:18

4

这就是说它不会生成包含该目录中文件列表的HTML文档(它指的是“目录索引”)。您仍然应该能够直接访问这些文件。尝试加载特定的文件,而不是只将裸露的目录名称放入浏览器中。

+0

是 - 当我进入'...../my_project/my_app/static /'时,我可以看到我的文件很好。所以当我渲染我的模板时,这应该仍然有效?因为在我的index.html文件中,我链接到了我的css文档,并且我的链接是'src = {{STATIC_URL}} style.css',当我检查get请求时,它只是直接向style.css和因此不会返回我的css文件。我是一个django noob..sorry哈 – 2012-07-29 02:55:00

0

根据您对Jim的回答的评论,它看起来像Django只是没有为{{STATIC_URL}}获取适当的值。

看你的代码,它看起来像在设置你

STATIC_URL' = '/static/' 

与STATIC_URL那里不应该是一个经过单引号。尝试

STATIC_URL = '/static/' 

这是否能解决您的问题?

+0

啊,只是注意到你实际上并没有在你的浏览器中访问该文件,你只是访问了硬盘上的位置哈哈。 Jim的意思是尝试访问localhost:8000/static/style.css(如果这是你的css文件所在的位置)(不在你的计算机上/ my_project/my_app/static /),并查看它是否加载。如果它正确加载,一切工作正常,你应该能够从你的模板访问你的静态文件。 – Intenex 2012-07-29 08:06:26

+0

好抓!幸运的是,这不是我的实际代码哈哈 – 2012-07-29 15:35:04