【发布时间】:2018-11-27 06:08:46
【问题描述】:
每次单击表单上的提交时,我都会尝试使用 Django 的 ImageField 和表单上传文件。 form.is_valid 返回 false 所以我打印了 forms.errors 它说
photo2
This field is required.
photo1
This field is required.
我选择了我要上传的图片文件,它仍然说是必填项。
这是我的 settings.py
的视图MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
这里是 views.py
def upload(request):
if request.method=="POST":
prod = Product()
form = UploadForm(request.POST, request.FILES)
if form.is_valid():
prod.name = form.cleaned_data.get('name')
prod.brand = form.cleaned_data.get('brand')
prod.material = form.cleaned_data.get('material')
prod.color = form.cleaned_data.get('color')
prod.price = form.cleaned_data.get('price')
prod.discount = form.cleaned_data.get('discount')
prod.sex=form.cleaned_data.get('sex')
prod.photo1 = form.cleaned_data('photo1')
prod.photo2 = form.cleaned_data('photo2')
prod.save()
return render(request, 'upload.html', {'form': form})
else:
x = form.errors
return render(request,'upload.html', {'alert':x}, {'form': form})
else:
form = UploadForm
return render(request, 'upload.html', {'form': form})
这是我的 models.py
class Product(models.Model):
name = models.CharField(max_length=200, default='N/A')
brand = models.CharField(max_length=50, default='N/A')
material = models.CharField(max_length=50, default='N/A')
color = models.CharField(max_length=20, default='N/A')
price = models.IntegerField(default=0)
discount = models.IntegerField(default=0)
discountprice = models.IntegerField(default=0)
photo1 = models.ImageField(upload_to='productphotos/')
photo2 = models.ImageField(upload_to='productphotos/')
Male = 'M'
Female = 'F'
Both = 'Both'
Genders = ((Male, 'Male'),(Female, 'Female'), (Both, 'Both'))
sex = models.CharField(choices=Genders, default=Male, max_length=6)
forms.py 类 UploadForm(forms.ModelForm):
class Meta:
model = Product
fields = ['name', 'brand', 'material', 'sex', 'color', 'price', 'discount', 'photo1', 'photo2']
在我的模板中 我只是在使用
<div>
{{form}}
</div>
提前感谢您的帮助。如果需要,我可以上传 forms.py。
【问题讨论】:
-
您的 UploadForm 代码在哪里?
-
您是否将
enctype="multipart/form-data"属性添加到模板中的form标记? -
@schwobaseggl 我上传了我的模板代码。
标签: python django django-forms imagefield