Django图像上载表单无效
由于某些原因,在django中,我尝试使用的表单被认为是无效的。这段代码几乎直接取自一个声称它可以工作但仍然不能正常工作的站点。 我的代码如下 观点 模板(模板名称为update\u display\u image.html) 编辑:忘记发布表单代码抱歉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:
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})