2012-07-05 26 views
6

我正在編寫一個Django應用程序,用戶可以在其中上傳圖像,而我不知道如何爲它們提供服務。我可以看到兩種方法:如何在Django中提供用戶上傳的文件?

1-將它們上載爲靜態文件:將它們上載到項目目錄中的static文件夾中,然後運行python manage.py collectstatic,但我不知道如何在每次文件時自動運行此命令上傳,這似乎是很多處理,因爲每次服務器將刪除並重新加載我的靜態應用程序中的所有內容。

2-使用django.views.static.serve在我的urls.py:

url(r'^media/(?P<path>.*)$', 'django.views.static.serve', { 
     'document_root': settings.MEDIA_ROOT, 
    }), 

the doc不推薦它用於生產。

推薦使用用戶上傳的文件的方式是什麼?

+0

我認爲這是一個好主意,通過Apache或一個類似的網絡服務器來服務這些文件。如果您需要進一步控制(如用戶權限),則可以選擇mod_xsendfile。 – Jingo 2012-07-05 10:41:54

回答

2

您上傳的文件進入MEDIA_ROOT,可以使用MEDIA_ROOT服務。您需要在settings.py中設置這些參數。

您的開發可以通過django dev服務器爲他們提供服務,但您可以將其配置爲從apache或其他服務器提供服務。

參考Django managing stored files

+0

你有沒有關於如何配置它從Apache服務的例子? – jul 2012-07-05 10:55:55

+0

使用與您用於靜態文件相同的配置。或者你問如何配置Apache來提供一般的文件? – scytale 2012-07-05 11:33:19

+0

我使用webfaction託管,我遵循http://docs.webfaction.com/software/django/getting-started.html中提供的靜態媒體服務說明。這是用於'django.contrib.staticfiles',但我需要另一個目錄,我可以上傳文件並提供它們,而不使用'django.contrib.staticfiles'。我會問在webfaction特定的論壇。謝謝。 – jul 2012-07-05 12:31:17

相關問題