模型相关
- 图片上传以及显示
如果想支持从本地上传图片,需要把img设置为ImageField。
然后需要安装一个图片库
pip install Pillow
upload_to 选项指明该字段的图片保存在MEDIA_ROOT目录中的哪个子目录,需要在settings先设置MEDIA_ROOT ,
#直接在settings.py的末尾写入:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
模型字段为:
app/models.py
class NewsBase(models.Model):
#verbose_name代表的是字段的说明,用于admin等显示字段。admin系统中一般默认显示字段名。
img = models.ImageField(max_length=255,null=True,verbose_name='新闻图片',blank=True,upload_to='mgh')
app/admin.py
@admin.register(News)
class NewsAdmin(admin.ModelAdmin):
list_display = ['title','img_data']
#显示缩略图,本人数据都是从网上爬取,当图片有问题才从本地上传图片
#本地上传的图片在数据库一般是一个相对路径
def img_data(self, obj):
if obj.img and hasattr(obj.img, 'url'):
#数据从网上爬的一般img字段就是一个链接,因此这样处理
if 'http' in obj.img.url:
return format_html('<img src="{0}" width="150px" height="150px"/>'.format(obj.img))
else:
return format_html('<img src="{0}" width="150px" height="150px"/>'.format(obj.img.url))
else:
return None
#对于方法的描述,会显示为名称
img_data.short_description = '新闻图片'
网友评论