我正在尝试部署一个能够上载文件并修改该文件的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