2013-05-18 55 views
0

我正在使用django 1.3并试图在我的开发机器(Ubuntu 12.04)上部署django项目(客户端发送)。问题是关于静态文件。我目录结构如下: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.

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

回答

1

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

+0

你的意思是在主要的urls.py中请解释你的回答 –

+0

不,不在urls.py中,因为正如文档中明确解释的那样,Django在生产中不会提供静态文件,这就是为什么我说您需要配置您的Web服务器来执行此操作。再次,如果您已经阅读了足够的文档以了解您需要运行静态文件,则可以在同一位置进行解释。 –

2

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

+0

可惜我没有,但没有成功:( –

+0

你有“django.contrib.staticfiles .finders.AppDirectoriesFinder'在你的STATICFILES_FINDERS中? – GreyZmeem

+0

是的,我有STATICFILES_FINDERS在settings.py中的默认行为 –

1

你运行python manage.py collectstatic?请参阅here

要小心在生产中您应该将静态文件放置在静态服务器中。指南中应该有一些东西。

+0

很遗憾我没有成功:( –

+0

如果你设置了'STATIC_ROOT ='static /''? – EsseTi

+0

静态根目录只是为了生产你不应该匹配它如 – user2298943

0

而且有点offtopic ...
这将是更好的,使用方法:
MEDIA_ROOT = os.path.join(os.path.dirname(文件), '媒体')取代('\。 ”, '/')
STATIC_ROOT = os.path.join(os.path.dirname(文件), '静态')。代替( '\', '/')

和在主网址.py开发时,仅限于django webserver:
urlpatterns = patterns('', (r'^ media /(?P。*)','django.views.static.serve',{'document_root':os。 PA ('''''')}),
(r'^ static /(?P. *)',' ('\','/')}),

,''''

这样,吴唐t need collectstatic, u会需要它在生产服务器,其中u将使用nginx的或其他的东西你服务器的静态