Python Django无法上载图像文件
我在模型中尝试ImageField,但当我尝试从表单上载时,图像上载不起作用。但是当我从管理页面上传它时,它就工作了 任何调试的方法都是有帮助的 我的模型-Python Django无法上载图像文件,python,django,model,Python,Django,Model,我在模型中尝试ImageField,但当我尝试从表单上载时,图像上载不起作用。但是当我从管理页面上传它时,它就工作了 任何调试的方法都是有帮助的 我的模型- class Inventory(models.Model): """docstring for Inventory""" name = models.CharField(max_length=100,default='Something') image =
class Inventory(models.Model):
"""docstring for Inventory"""
name = models.CharField(max_length=100,default='Something')
image = models.ImageField(null=True, blank=True)
description = models.CharField(max_length=100, default='Describe Something')
price = models.IntegerField( default=0)
我的表格-
class InventoryForm(forms.ModelForm):
class Meta:
model = Inventory
fields = ['name','description','price','image']
widgets = {
'name' : forms.TextInput(attrs={"placeholder":"Name", "onfocus":"this.value = '';","onblur":"if (this.value=='') this.value = this.defaultValue","required":""}),
'description' : forms.TextInput(attrs={"placeholder":"Email", "onfocus":"this.value = '';","onblur":"if (this.value=='') this.value = this.defaultValue","required":""}),
'price' : forms.NumberInput(attrs={"placeholder":"Price","onfocus":"this.value = '';","onblur":"if (this.value=='') this.value = this.defaultValue","required":""}),
}
背景-
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media/")
模板-
<form action="" method="post" enctype="multipart/form-data"> {% csrf_token %}
{{form}}
<input type="submit" value="Send">
</form>
问候,,
Deepak Dash如何在图像字段中向模型中添加upload_并添加默认图像?这将在以后派上用场,无论您是否选择:
models.py
class Inventory(models.Model):
"""docstring for Inventory"""
name = models.CharField(max_length=100,default='Something')
image = models.ImageField(upload_to='/your_file_name/',default='default.png')
description = models.CharField(max_length=100, default='Describe Something')
price = models.IntegerField(default=0)
在您的视图中.py。更改:
form=InventoryForm(request.POST或None)
到
form=InventoryForm(request.POST、request.FILES或None)
因为,django post请求中的文件位于request.Files字典中。您还必须将其发送到表单。问题可能出在您的views.py中。使用
request.Files
接收文件。确保您没有对文件使用request.POST
,我添加了views.py文件,我也添加了下面的答案,我可以尝试一下,但这不是一个好的做法。我想使用媒体url和媒体设置
def index(request):
form = InventoryForm(request.POST or None)
if form.is_valid():
form.save()
form = InventoryForm()
else:
form = InventoryForm()
inventory = Inventory.objects.all()
context = {'form' : form, 'all_inventory' : inventory}
return render(request, 'inventory/index.html',context)
models.py
class Inventory(models.Model):
"""docstring for Inventory"""
name = models.CharField(max_length=100,default='Something')
image = models.ImageField(upload_to='/your_file_name/',default='default.png')
description = models.CharField(max_length=100, default='Describe Something')
price = models.IntegerField(default=0)