2017-08-16 109 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 –

相关问题