Django:渲染模板时缺少静态文件

时间:2013-05-18 12:47:20

标签: django http-status-code-404 static-files django-1.3

我正在使用django 1.3并尝试在我的开发机器(ubuntu 12.04)上部署django项目(客户端已发送)。问题出在静态文件上。我的目录结构如下:

project_name
    media
    static
        css
        img
        js
    settings.py

这是我的settings.py:

ROOT = '/home/user/project_name'

MEDIA_ROOT = '%s/media/' % ROOT
MEDIA_URL = '/media/'
STATIC_ROOT = '%s/static/' % ROOT
STATIC_URL = '/static/'
STATICFILES_DIRS = ()

我的网站已完美部署,但缺少css,js和imgs。管理界面的情况也是如此。当我使用链接http://mysite.com/static/js/some.js时,它会给出404。

帮助将不胜感激,并且投票的答案是自定义的。

4 个答案:

答案 0 :(得分:2)

我认为您需要运行./manage.py collectstatic:)

答案 1 :(得分:1)

你运行python manage.py collectstatic了吗?见here

请注意,在生产中,您应该将静态文件放在静态服务器中。准则中应该有一些内容。

答案 2 :(得分:1)

您没有提及将Web服务器配置为实际提供静态文件。您需要将它指向collectstatic将它们放入的目录。

答案 3 :(得分:0)

还有一点offtopic ..
使用时会更好:
MEDIA_ROOT = os.path.join(os.path.dirname( file ),'media')。replace('\','/')
STATIC_ROOT = os.path.join(os.path.dirname( file ),'static')。replace('\','/')

在开发时的主urls.py中,仅限django webserver:
urlpatterns = patterns('',     (r'^ media /(?P。*)','django.views.static.serve',{'document_root':os.path.join(os.path.dirname( file )) ,'media')。replace('\','/')}),
    (r'^ static /(?P。*)','django.views.static.serve',{'document_root':os.path.join(os.path.dirname( file )) , '静态')。代替( '\', '/')}),

通过这种方式,你不会t need collectstatic, u在生产服务器上需要它,你将使用nginx或其他东西来服务你的静态