我按照这个问题中的说明,文档,我甚至看过这个,但到目前为止,我无法使用我的静态文件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')
Run Code Online (Sandbox Code Playgroud)
在我的urls.py中:
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
# The rest of my urls here...
if settings.DEBUG:
urlpatterns += staticfiles_urlpatterns()
Run Code Online (Sandbox Code Playgroud)
我在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 %}
Run Code Online (Sandbox Code Playgroud)
而且我保证我不会产生幻觉:
(.env)wayne:~/programming/somesite/static$ pwd
/home/wayne/programming/somesite/static
(.env)wayne:~/programming/somesite/static$ ls
admin styles
Run Code Online (Sandbox Code Playgroud)
但是,当导航到http://localhost:8000/我的网站时缺少其样式表,当我去,http://localhost:8000/static/styles/main.css我'styles/main.css' could not be found试图导航到localhost:8000/static/,或者localhost:8000/static/styles它告诉我不允许使用目录索引.
我在这里错过了什么?
sup*_*cuo 14
Django对静态文件的处理仍然有点混乱,特别是在相关设置的命名方面.
简短的回答是移动静态文件; 代替
/home/wayne/programming/somesite/static
Run Code Online (Sandbox Code Playgroud)
把它们放进去
/home/wayne/programming/somesite/yourapp/static
Run Code Online (Sandbox Code Playgroud)
(其中"yourapp"显然是主应用程序的名称).
更长的答案是,我认为你(可以理解)对各种设置感到困惑.STATIC_ROOT 仅是指位置在您的静态文件应该结束了运行后manage.py collectstatic.collectstatic在本地开发时,您不需要这个集合(因为您不应该真正需要).无论哪种方式,STATIC_ROOT都应该始终引用一个空目录.
您的STATICFILES_DIRS设置几乎可以正常工作,除了您告诉Django有两条路径可以找到静态文件
/home/wayne/programming/somesite/static/styles
/home/wayne/programming/somesite/static/admin
Run Code Online (Sandbox Code Playgroud)
所以当你这样做{% static "styles/main.css" %}时会寻找
/home/wayne/programming/somesite/static/styles/styles/main.css
/home/wayne/programming/somesite/static/admin/styles/main.css
Run Code Online (Sandbox Code Playgroud)
并且显然不会找到他们.什么可能工作
STATICFILES_DIRS = ('/home/wayne/programming/somesite/static',)
Run Code Online (Sandbox Code Playgroud)
但是没有必要这样做,因为你可以依赖django.contrib.staticfiles.finders.AppDirectoriesFinder(在默认的STATICFILES_FINDERS中)并将静态文件移动到app目录.
希望这能把事情搞清楚一点.
| 归档时间: |
|
| 查看次数: |
6569 次 |
| 最近记录: |