Django服务静态文件不能与dev服务器一起使用

时间:2011-12-10 22:54:34

标签: python django

不确定我做错了什么,但我无法让它发挥作用。我正在使用Django 1.3和Python 2.7。

我的项目结构如下:

project
   static
   templates
   settings.py
   apps
      ...

在我的settings.py文件中,我有

PROJECT_ROOT = os.path.realpath(os.path.dirname(__file__))
STATIC_ROOT = os.path.realpath(os.path.join(PROJECT_ROOT, 'static'))
STATIC_URL = '/static'

我的urls.py文件:

from django.conf.urls.defaults import *
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^grappelli/', include('grappelli.urls')),
) 
urlpatterns += staticfiles_urlpatterns()

在我的模板中,我正在使用{{ STATIC_URL }}创建文件的正确路径,如下所示:/static/js/libs/modernizr-2.0.6.min.js

我的静态文件都没有加载,我已经仔细检查了目录结构是否正确。我觉得我正在服用疯狂的药片,所以任何建议都表示赞赏。感谢

2 个答案:

答案 0 :(得分:2)

您应该将完整路径添加到dir中,将静态文件放在settings.py中的STATICFILES_DIRS中,如下所示:

STATICFILES_DIRS = (
                '/path/to/static',
)

答案 1 :(得分:0)

可以像上一个答案一样添加STATICFILES_DIRS,也可以将包含'static'dir的软件包目录放在INSTALLED_APPS中,因为django会在开发过程中自动为应用程序中的任何静态目录提供服务。如果您的project目录不在python路径上而且您不打算将其导入,那么您必须定义STATICFILES_DIRS并将绝对路径放到静态目录中。