2013-05-18 240 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的或其他的東西你服務器的靜態