如何在Django Admin中进行图片处理和缩略图生成

2023-04-11 00:00:00 生成 缩略图 图片处理

在Django Admin中进行图片处理和缩略图生成,可以使用Pillow库和Django Imagekit库。

1、安装Pillow和Django Imagekit库

在命令行中运行以下命令:

pip install Pillow
pip install django-imagekit

2、在models.py中添加图片字段

from django.db import models
from django.utils.html import format_html
from imagekit.models import ImageSpecField
from imagekit.processors import ResizeToFill

class MyModel(models.Model):
    name = models.CharField(max_length=50)
    image = models.ImageField(upload_to='images')
    thumbnail = ImageSpecField(source='image',
                               processors=[ResizeToFill(100, 100)],
                               format='JPEG',
                               options={'quality': 60})

    def __str__(self):
        return self.name

    def image_tag(self):
        return format_html('<img src="{}" width="150" />'.format(self.thumbnail.url))

    image_tag.short_description = 'Thumbnail'

在这个例子中,我们在MyModel中添加了一个图片字段“image”,并且设置了它的缩略图字段“thumbnail”。

3、在admin.py中注册模型,并定制模型表单

from django.contrib import admin
from .models import MyModel

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('name', 'image_tag')

admin.site.register(MyModel, MyModelAdmin)

在这里,我们自定义了模型表单的展示,添加了一个自定义的“image_tag”字段,用于显示缩略图。

4、在模板中使用图片字段

{% if object.image %}
    <img src="{{ object.thumbnail.url }}" alt="{{ object.name }}">
{% else %}
    No image available
{% endif %}

在这个例子中,我们使用Django模板语言展示了缩略图,如果没有图片,则显示“No image available”。

鉴于您提供的字符串示例,“pidancode.com”和“皮蛋编程”不是图片,因此无法提供该实例的完整代码演示。但是,您可以通过上述代码示例自行实现类似的图片处理和缩略图生成功能。

相关文章