📅  最后修改于: 2023-12-03 15:14:44.026000             🧑  作者: Mango
在 Django 的管理页面中显示图像可以为用户提供更好的可视化体验。本文将会介绍如何使 Django 管理页面可以上传和显示图像。
首先,需要安装以下依赖库:Pillow 和 django-imagekit。
pip install Pillow
pip install django-imagekit
假设我们有一个 Product
模型,现在我们需要添加一个 image
字段。
from django.db import models
from imagekit.models import ProcessedImageField
class Product(models.Model):
name = models.CharField(max_length=200)
image = ProcessedImageField(upload_to='products',
format='JPEG',
options={'quality': 60},
null=True, blank=True)
ProcessedImageField
来自于 django-imagekit
。上述代码在 Product
模型中添加了一个名为 image
的字段,其类型为 ProcessedImageField
,并指定了上传到 products
目录中,格式为 JPEG
,质量为 60
。null=True
表示该字段可为 null
,blank=True
表示该字段可为空。
我们需要在 admin.py
中为 Product
模型注册一个自定义的表单组件,以允许在管理页面中上传图像。
from django.contrib import admin
from imagekit.admin import AdminThumbnail
from .models import Product
class ProductAdmin(admin.ModelAdmin):
list_display = ('name', 'admin_thumbnail')
admin_thumbnail = AdminThumbnail(image_field='image_thumbnail')
admin.site.register(Product, ProductAdmin)
AdminThumbnail
用于在管理页面中显示缩略图,其 image_field
参数指定了缩略图字段名称。我们将 admin_thumbnail
添加到了 list_display
中,以便在管理页面中显示。最后,我们通过调用 register
函数使 ProductAdmin
为 Product
模型的管理页面。
我们需要在 change_form.html
模板中添加一些代码,以便在管理页面中上传图像。
{% extends "admin/change_form.html" %}
{% block field_sets %}
{{ block.super }}
<fieldset class="module aligned {{ form.image.thumbnail_html_class }}">
<div class="form-row">
<div class="field-box">
<label{% if form.image.label_suffix %} for="{{ form.image.id_for_label }}"{% endif %}>{{ form.image.label }}</label>
<div class="field-box">
{{ form.image }}
{% if form.image.thumbnail_html %}
<div class="{{ form.image.thumbnail_html_class }}">{{ form.image.thumbnail_html }}</div>
{% endif %}
</div>
{% if form.image.help_text %}
<p class="help">{{ form.image.help_text|safe }}</p>
{% endif %}
</div>
</div>
</fieldset>
{% endblock %}
现在,在 Django 的管理页面中就能上传和显示图像了。这将增强用户的交互体验,并提高用户的参与度。