Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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图像上载表单无效_Django_Django Forms_Django Templates - Fatal编程技术网

Django图像上载表单无效

Django图像上载表单无效,django,django-forms,django-templates,Django,Django Forms,Django Templates,由于某些原因,在django中,我尝试使用的表单被认为是无效的。这段代码几乎直接取自一个声称它可以工作但仍然不能正常工作的站点。 我的代码如下 观点 模板(模板名称为update\u display\u image.html) 编辑:忘记发布表单代码抱歉 class ImageForm(forms.Form): image = forms.ImageField() 进一步编辑:将我的窗体类更改为此 class ImageForm(forms.Form): class Meta:

由于某些原因,在django中,我尝试使用的表单被认为是无效的。这段代码几乎直接取自一个声称它可以工作但仍然不能正常工作的站点。 我的代码如下

观点

模板(模板名称为update\u display\u image.html)

编辑:忘记发布表单代码抱歉

class ImageForm(forms.Form):
    image = forms.ImageField()
进一步编辑:将我的窗体类更改为此

class ImageForm(forms.Form):
    class Meta:
        model = Display
        fields = ('image',)
允许出于某种原因将表单读取为有效,尽管我不明白为什么。不幸的是,这导致我的视图方法无法正常工作,因为它无法再读取

display.image = form.cleaned_data['image']

forms.py
中,检查您是否有这样一个Django表单:

class ImageForm(forms.ModelForm):
    class Meta:
        model = Display
        fields = ['image',]
<form method='post' enctype='multipart-formdata>
{% csrf_token %}
{{ form }}
<input type='submit' value='Update Image'>
模板中
添加
{{form}
而不是手动使用
输入
,如下所示:

class ImageForm(forms.ModelForm):
    class Meta:
        model = Display
        fields = ['image',]
<form method='post' enctype='multipart-formdata>
{% csrf_token %}
{{ form }}
<input type='submit' value='Update Image'>

如果表单类是modelform:
类ImageForm(forms.modelform):
您可以将实例传递给表单并保存它

def display_update_image(request, pk):
    if request.method == 'POST':
        display = Display.objects.get(pk = pk)
        form = ImageForm(request.POST, request.FILES, instance=display)
        if form.is_valid():
            form.save()
        return HttpResponseRedirect(reverse('displays'))
    else :
        form = ImageForm()
    return render(request, 'catalog/update_display_image.html', {'form': form})

你能发布
ImageForm
的de代码吗?带有模型的表单类应该是
类ImageForm(forms.ModelForm):
啊,对不起,我忘了提到我有一个类似的表单,一旦我将这两个文件更新为与你提到的相同,它就会认为表单是有效的。不幸的是,它无法识别表单。当我点击“提交”时,从我的视图中清除了数据['image']。@user8265778你能粘贴你得到的错误吗?KeyError位于/catalog/display/97ee7328-ccda-447d-b454-2ac53b0bf831/update image/异常位置是我在
ImageForm(forms.ModelForm)
def display_update_image(request, pk):
    if request.method == 'POST':
        display = Display.objects.get(pk = pk)
        form = ImageForm(request.POST, request.FILES, instance=display)
        if form.is_valid():
            form.save()
        return HttpResponseRedirect(reverse('displays'))
    else :
        form = ImageForm()
    return render(request, 'catalog/update_display_image.html', {'form': form})