Python 无法将图像上载到Django管理员
我正在从事电子商务项目,我被困在这一点上。每当管理员添加新产品时,它还应该添加与产品相关的图像。所以我用ImageField添加了这个列,但一次又一次地出现错误。这是我的模型代码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
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设置为
,然后更改图像源标记,它显示的仍然是图像的路径,而不是图像。我猜在尝试了更多之后,它工作了!非常感谢你的帮助。