我已经按照this questionthe documentation中的说明进行了操作,甚至查看了this one,但是到目前为止,我无法使用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 collectstatic后静态文件应以结尾的位置。在本地开发时,您不需要此集合(因为您实际上不需要collectstatic)。无论哪种方式,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(在the default STATICFILES_FINDERS中)并将静态文件移动到应用程序目录中。

希望这可以使事情变得简单。

关于python - 尝试在开发服务器上提供Django静态文件-找不到,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12026010/

10-10 19:17