在django PYTHON中将文件上载到自定义目录
我有自定义表单,我需要将图像上传到某个目录,下面是代码 视图功能在django PYTHON中将文件上载到自定义目录,python,django,file-upload,error-handling,Python,Django,File Upload,Error Handling,我有自定义表单,我需要将图像上传到某个目录,下面是代码 视图功能 def user_profile(request): if request.method == 'POST': form = ImageForm(request.POST, request.FILES) if form.is_valid() and form.is_multipart(): new_user = save_file(request.FILES['im
def user_profile(request):
if request.method == 'POST':
form = ImageForm(request.POST, request.FILES)
if form.is_valid() and form.is_multipart():
new_user = save_file(request.FILES['image'])
return HttpResponse(new_user)
else:
form = ImageForm()
return render_to_response('user_profile.html', { 'form': form })
def save_file(file, path='home/ghrix/ghrixbidding/static/images/'):
''' Little helper to save a file
'''
filename = file._get_name()
fd = open('%s/%s' % (MEDIA_ROOT, str(path) + str(filename)), 'wb')
for chunk in file.chunks():
fd.write(chunk)
fd.close()
表格如下:
<form method="POST" class="form-horizontal" id="updateform" name="updateform" enctype="multipart/form-data" action="/user_profile/">{% csrf_token %}
<input type="file" id="fileinput" name="fileinput" />
<button class="btn btn-gebo" type="submit">Save changes</button>
</form>
关于该错误,您认为问题在于:如果您的表单无效,则不会向客户端返回响应:
def user_profile(request):
if request.method == 'POST':
form = ImageForm(request.POST, request.FILES)
if form.is_valid():
new_user = save_file(request.FILES['image'])
return HttpResponse(new_user)
else:
form = ImageForm()
# *** Unindented
return render_to_response('user_profile.html', { 'form': form })
另外(我在文件上传方面没有太多经验),但我认为您不需要检查
is_multipart
检查-这可能会导致您的表单看起来无效 错误表示您的视图没有返回任何HttpResponse
。有一种情况是可能的-
def user_profile(request):
if request.method == 'POST':
form = ImageForm(request.POST, request.FILES)
if form.is_valid() and form.is_multipart():
new_user = save_file(request.FILES['image'])
return HttpResponse(new_user)
# ------^
# There is not else check. It's possible that the if condition is False.
# In that case your view is returning nothing.
else:
form = ImageForm()
return render_to_response('user_profile.html', { 'form': form })
def user_profile(request):
if request.method == 'POST':
form = ImageForm(request.POST, request.FILES)
if form.is_valid() and form.is_multipart():
new_user = save_file(request.FILES['image'])
return HttpResponse(new_user)
# ------^
# There is not else check. It's possible that the if condition is False.
# In that case your view is returning nothing.
else:
form = ImageForm()
return render_to_response('user_profile.html', { 'form': form })