2017-06-14 63 views
1

我目前有兩種類型的文件都靜態文件和媒體files.The靜態文件包含我的CSS,JS和其它靜態內容。媒體文件包含用戶上傳的內容。靜態文件夾緊鄰媒體文件夾。現在位於已部署的計算機上。如果我設置了DEBUG = False,我的靜態文件顯示得很好,但是我的媒體內容從不顯示。我收到一個404 not found錯誤。 我的問題是如何在DEBUG = False時在生產環境中顯示媒體內容。用DEBUG =真的一切似乎工作正常?我閱讀了以下page並嘗試了這些東西。與調試=生產假不顯示Django的媒體文件 - Django的1.10

1 - 嘗試創建靜態媒體就像靜態內容的單獨文件夾。 目前我的靜態內容由collectstatic命令管理。我使用webfaction.I阿帕奇有一個靜態的文件夾,名爲static_content當我跑./manage.py collectstatic我所有的靜態文件夾中的內容被複制到static_content folder.I嘗試創建另一個叫static_media靜態文件夾。但是,當我運行./manage.py collectstatic時,我的media文件夾的內容被複制到static_content而不是static_media,因爲它應該有。誰能告訴我爲什麼collectstatic命令不會將內容粘貼到static_media

這是我的配置看起來像

ALLOWED_HOSTS = [ 
    "*", 
    'mywebsite.com', 
    'www.mywebsite.com.com', 
] 


STATIC_URL = 'http://mywebsite.com.com/static/' 
STATIC_ROOT = '/home/admin/webapps/static_content' 
STATICFILES_DIRS = (
         '/home/admin/webapps/mainfolder/mainapp/static', 
         '/home/admin/webapps/mainfolder/mainapp/media', 
        ) 
PROJECT_PATH = os.path.join(BASE_DIR, 'static') 

MEDIA_URL = 'http://mywebsite.com.com/media/' 
MEDIA_ROOT = '/home/admin/webapps/static_media' 

這就好比

admin.autodiscover() 
urlpatterns = [ 
.... 
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

我在用正確的方法創造只是管理我的媒體內容的單獨的文件夾就是我urls.py外觀像DEBUG = False時的靜態內容一樣?如果是這樣,那麼爲什麼collectstatic命令會將我的所有媒體內容轉儲到我的static_content文件夾而不是static_media文件夾中?另外,如果我使用靜態文件夾來管理我的媒體內容,當用戶上傳數據將被上傳到mediastatic_media

+0

注意你不需要'admin.autodiscover()'在Django 1.7+ – Alasdair

+0

感謝您指出了這一點。看起來像我是戈爾戈提到我使用的Django版本。我剛剛添加了它。 – MistyD

回答

3

你不應該爲你的媒體目錄使用collectstatic。從STATICFILES_DIRS刪除'/home/admin/webapps/mainfolder/mainapp/media',然後設置

MEDIA_ROOT = '/home/admin/webapps/mainfolder/mainapp/media' 

一旦你做到了這一點,在static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)應該當DEBUG = True服務的媒體文件。

對於DEBUG = False,你必須configure Apache服務於媒體文件。

+0

我已經有了DEBUG = True的媒體文件。我想我必須配置Apache。 – MistyD

+0

聽起來不像是在你的問題 - 「如果我設置DEBUG = True我的靜態文件呈現很好,但我的媒體內容永遠不會顯示」 – Alasdair

+0

啊感謝捕捉。我只是修復它。我試圖弄清楚如何配置httd.conf我無法在我的部署服務器中找到apache2,conf – MistyD