2017-08-16 104 views
0

我正在嘗試部署一個能夠上載文件並修改該文件的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> 
+0

如果它在dev服務器上工作,它可能不是Python錯誤。我認爲你在proj.conf中配置了虛擬主機。或者你忘記打開文件夾的權限? – GrandGTO

+1

當你有'DEBUG = True'時,當這樣的事情發生時,它顯示你一個調試信息的地獄。當你有'DEBUG = False'時,它會通過電子郵件發送給你這些信息。如果您還沒有正確設置電子郵件,那麼一種快速和骯髒的方法是在生產中設置「DEBUG = True」來檢查發生了什麼。但是,最終您需要通過設置「EMAIL_ *」設置來正確設置電子郵件。另請參閱https://djangodeployment.com/2017/01/18/why-does-django-not-email-me-the-500-internal-server-error/以防範這些設置。 –

+0

是的,就是這樣。 @GrandGTO這是一個權限的媒體文件夾,我看到設置DEBUG = True(不知道你可以在生產中做到這一點)。如果你們中的任何一個人想在下面發佈答案,我會接受它。 – 4rsenal

回答

0

如果它正在開發服務器上,這可能不是一個Python錯誤。我認爲你在proj.conf中配置了虛擬主機。或者你忘記打開文件夾的權限?

+0

有關Apache用戶訪問權限的進一步討論,請參閱http://modwsgi.readthedocs.io/en/develop/user-guides/application-issues.html#access-rights-of-apache-user –

相關問題