0

我有自定义表单,我需要将图像上传到某个目录,下面是代码

视图函数

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>

但我收到此错误:

The view userprofile.views.user_profile didn't return an HttpResponse object.
4

2 回答 2

1

该错误表明您的视图没有返回任何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 })
于 2013-08-14T06:54:55.733 回答
0

关于该错误,您认为问题出在:如果您的表单无效,则您不会向客户端返回响应:

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检查 - 它可能会导致您的表单看起来无效。

于 2013-08-14T06:44:03.200 回答