Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.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
Python Django无法上载图像文件_Python_Django_Model - Fatal编程技术网

Python Django无法上载图像文件

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 =

我在模型中尝试ImageField,但当我尝试从表单上载时,图像上载不起作用。但是当我从管理页面上传它时,它就工作了

任何调试的方法都是有帮助的

我的模型-

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)