Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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_Django Models_Django Admin - Fatal编程技术网

Python 无法将图像上载到Django管理员

Python 无法将图像上载到Django管理员,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,我正在从事电子商务项目,我被困在这一点上。每当管理员添加新产品时,它还应该添加与产品相关的图像。所以我用ImageField添加了这个列,但一次又一次地出现错误。这是我的模型代码 class Product(models.Model): product_id = models.IntegerField(primary_key=True) name = models.CharField(max_length=100, blank=True, null=True) image

我正在从事电子商务项目,我被困在这一点上。每当管理员添加新产品时,它还应该添加与产品相关的图像。所以我用ImageField添加了这个列,但一次又一次地出现错误。这是我的模型代码

class Product(models.Model):
    product_id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=100, blank=True, null=True)
    image = models.ImageField(db_column='image' , blank=True, null=True)
    info = models.CharField(max_length=500, blank=True, null=True)
    
    def image_tag(self):
        if self.image:
            return mark_safe('<img src="%s"/>' % self.image.url)
        else:
            return 'No Image Found'
    image_tag.short_description = 'Image'

但每次我都会犯这个错误

Exception Type: AttributeError
Exception Value:'bytes' object has no attribute 'url'

我尝试使用escape,但它仍然不显示图像。我使用的是MySQL现有数据库。我真的需要帮助。谢谢

目前,您正在将图像以字节形式存储在数据库中,Django不喜欢这样。您应该首先指定
MEDIA\u ROOT
这是保存图像的文件夹,并且只有URL会保存在数据库中。文件

我假设您已经设置了
媒体
设置并安装了
枕头
。 您的
ImageField
如下所示:

# No need to specify db_column as Django already stores by default field's name.
image = models.ImageField(upload_to='users/%Y/%m/%d/', blank=True, null=True)
现在,在模板中,您可以通过

<img src="http://127.0.0.1:8000/media/{{ profile.photo }}" id='profile-photo'>

目前,您正在将图像以字节形式存储在数据库中,Django不喜欢这样。您应该首先指定
媒体\u ROOT
这是保存图像的文件夹,并且只有URL会保存在数据库中。文件

我假设您已经设置了
媒体
设置并安装了
枕头
。 您的
ImageField
如下所示:

# No need to specify db_column as Django already stores by default field's name.
image = models.ImageField(upload_to='users/%Y/%m/%d/', blank=True, null=True)
现在,在模板中,您可以通过

<img src="http://127.0.0.1:8000/media/{{ profile.photo }}" id='profile-photo'>


我想你需要添加<代码>上传到参数到Idvieldfield,如我所见:但是我在MySQL数据库中保存图像,我应该把它放在<代码>上传到中?在这种情况下,你应该考虑使用<代码> BinaryField < /C> >,并添加一个方法来生成URL。但这似乎不是个好主意。Django docs也这么说:目前您的数据库将图像存储为字节,因此它没有url。我认为您需要将
upload\u添加到
参数到ImageField,如图所示:但我正在MySQL数据库中保存图像,我应该把它放在<代码>上传到?在这种情况下,你应该考虑使用<代码> BinaryField < /代码>,并添加一个方法来生成URL。但这似乎不是个好主意。Django docs也这么说:目前您的数据库将图像存储为字节,因此它没有url。谢谢您的回答。我已经改变了我的想法,将图像保存在数据库中并尝试您的解决方案。但我也做不到。我已经将
uploads\u设置为
,然后更改图像源标记,它显示的仍然是图像的路径,而不是图像。我猜在尝试了更多之后,它工作了!非常感谢你的帮助。谢谢你的回答。我已经改变了我的想法,将图像保存在数据库中并尝试您的解决方案。但我也做不到。我已经将
uploads\u设置为
,然后更改图像源标记,它显示的仍然是图像的路径,而不是图像。我猜在尝试了更多之后,它工作了!非常感谢你的帮助。