我正在嘗試部署一個能夠上載文件並修改該文件的Django站點。它在開發服務器上運行100%,但是在使用Apache進行部署後,我遇到了問題。服務器錯誤(500)發生在我的views.py指定的行。我究竟做錯了什麼?我的問題可能不瞭解save()方法,但我找不到任何幫助我的信息/文檔。Django - Apache服務器上傳/保存文件時出現錯誤(500)
views.py
def upload(request):
if request.method == "POST":
formU = FileUploadForm(request.POST, request.FILES)
if formU.is_valid():
f = request.FILES['myFile']
fs = FileSystemStorage()
set_file_name(str(f))
fs.save(str(f), f) # where error occurs
既然一切開發服務器下正常工作,我認爲這將是一個媒體文件的事情,但(我認爲),一切看起來不錯那裏。
settings.py
MEDIA_ROOT = os.path.join(BASE_DIR, "media/")
MEDIA_URL = '/media/'
proj.conf
Alias /media /home/4rsenal/f_proj/media
<Directory /home/4rsenal/f_proj/media>
Require all granted
</Directory>
如果它在dev服務器上工作,它可能不是Python錯誤。我認爲你在proj.conf中配置了虛擬主機。或者你忘記打開文件夾的權限? – GrandGTO
當你有'DEBUG = True'時,當這樣的事情發生時,它顯示你一個調試信息的地獄。當你有'DEBUG = False'時,它會通過電子郵件發送給你這些信息。如果您還沒有正確設置電子郵件,那麼一種快速和骯髒的方法是在生產中設置「DEBUG = True」來檢查發生了什麼。但是,最終您需要通過設置「EMAIL_ *」設置來正確設置電子郵件。另請參閱https://djangodeployment.com/2017/01/18/why-does-django-not-email-me-the-500-internal-server-error/以防範這些設置。 –
是的,就是這樣。 @GrandGTO這是一個權限的媒體文件夾,我看到設置DEBUG = True(不知道你可以在生產中做到這一點)。如果你們中的任何一個人想在下面發佈答案,我會接受它。 – 4rsenal