我已经看过几个关于这个问题的帖子,但没有找到我的解决方案 .
我正在尝试在Django 1.3开发环境中提供静态文件 .
这是我的设置
...
STATIC_ROOT = '/home/glide/Documents/django/cbox/static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
'/static/',
)
...
我的urls.py
urlpatterns = patterns('',
...
url(r'^static/(?P<path>.*)$', 'django.views.static.serve',
{'document_root', settings.STATIC_ROOT}
),
...
);
我的/ home / glide / Documents / django / cbox / static /目录就像
css
main.css
javascript
image
尝试访问http://127.0.0.1:8000/static/css/main.css时出现404错误 .
我是否必须单独指定css,javascript和图像的模式?
5 回答
我困惑 STATIC_ROOT 和 STATICFILES_DIRS
其实我并没有真正理解 STATIC_ROOT 的实用性 . 我认为这是我必须放置我的公共文件的目录 . 此目录用于 生产环境 ,这是静态文件将由collectstatic放置(收集)的目录 .
STATICFILES_DIRS 是我需要的那个 .
由于我在开发环境中,我的解决方案是不使用 STATIC_ROOT (或指定另一个路径)并在 STATICFILES_DIRS 中设置我的公共文件目录:
另外别忘了
from django.conf import settings
提供静态文件可以通过多种方式实现;这是我对自己的笔记:
将
static/my_app/
目录添加到my_app
(请参阅下面有关命名空间的说明)定义一个新的顶级目录,并将其添加到settings.py中的STATICFILES_DIRS(注意
The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting
)我更喜欢第一种方式,并且设置接近defined in the documentation的方式,所以为了提供文件
admin-custom.css
以覆盖几种管理方式,我有这样的设置:然后在模板中使用它,如下所示:
部署时,我运行
collectstatic
并使用nginx提供静态文件 .文件清除了我的所有困惑:
settings.py
文件中只有两件事可以使你的静态文件服务 .1)
STATIC_URL = '/static/'
2)
并且您的静态文件应位于静态目录下,该目录与项目的设置文件位于同一目录中 .
即便如此,如果您的静态文件未加载,那么原因是,您可能已保留
将其更改为True(严格仅限开发) . 在 生产环境 中,只需将
STATICFILES_DIRS
更改为静态文件所在的任何路径 .另一个错误可能是您的应用未列在
INSTALLED_APPS
列表中,例如:没有它,你可能会面临诸如没有检测到静态文件,基本上所有涉及你的应用程序的文件的问题 . 即使通过使用正确的答案建议它是正确的:
可能是其中一个错误,如果出现此错误,应该进行审核 .
{'document_root', settings.STATIC_ROOT}
需要{'document_root': settings.STATIC_ROOT}
或者你会收到像
dictionary update sequence element #0 has length 6; 2 is required
这样的错误