Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在django PYTHON中将文件上载到自定义目录_Python_Django_File Upload_Error Handling - Fatal编程技术网

在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 })