Django ImageField 到底是什么?

Django 模型中的 imageField 是 FileField 的一部分,它为您的模型添加图像存储功能。尽管在您的模型上使用此字段有点容易,但大多数时候您必须小心,因为它会很快变得复杂。我写的这篇文章将带您逐步了解如何在模型上有效地使用图像字段。

使用 imageField

安装枕头

首先,在将图像字段添加到您的模型之前,您需要安装枕头库(这将帮助您平滑地渲染图像)。

安装运行

pip install pillow

该库提供广泛的文件格式支持、高效的内部表示和强大的图像处理能力。

添加图像字段

现在您可以将图像字段添加到模型中。

from django.core.files import File
from django.db import models
from PIL import Image
from django.contrib.auth.models import User


class Product(models.Model):
    title = models.CharField(max_length=255)
    slug = models.SlugField(max_length=255)
    description = models.TextField(blank=True, null=True)
    price = models.FloatField()
                #adding the image field
    image = models.ImageField(upload_to='uploads/', blank=True, null=True)
    thumbnail = models.ImageField(upload_to='uploads/', blank=True, null=True)
    date_added = models.DateTimeField(auto_now_add=True)

接下来,配置文件路径以存储使用 MEDIA_ROOT 和 MEDIA_URL 上传的图像。将以下代码复制到您的 settings 文件中。

MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'

media_url 是指向媒体文件上传目录的URL,而media_root 是媒体文件的存储路径。

有了这个,你几乎准备好了!

现在,更新您的urls.py文件,如下所示:

from django.urls import path
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),

] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

添加后,您的 Django 开发服务器将能够在开发和生产模式下提供媒体文件。

更新服务器

我们现在可以更新服务器,通过运行 migrations. 更新开发服务器

python manage.py makemigrations
python manage.py migrate

注意: 为避免出现以下错误,请确保在运行迁移之前安装了枕头库

magazine.Magazine.image: (fields.E210) Cannot use ImageField because Pillow is not installed.
        HINT: Get Pillow at https://pypi.org/project/Pillow/ or run command "python -m pip install Pillow".
post.Posts.image: (fields.E210) Cannot use ImageField because Pillow is not installed.
        HINT: Get Pillow at https://pypi.org/project/Pillow/ or run command "python -m pip install Pillow".
post.Sample.image: (fields.E210) Cannot use ImageField because Pillow is not installed.
        HINT: Get Pillow at https://pypi.org/project/Pillow/ or run command "python -m pip install Pillow".
post.Workers.avatar: (fields.E210) Cannot use ImageField because Pillow is not installed.
        HINT: Get Pillow at https://pypi.org/project/Pillow/ or run command "python -m pip install Pillow".

完成上述步骤后,运行服务器。

python manage.py runserver

上述函数将运行开发服务器。登录到管理环境,查看图像字段。

adin_login _page (2).jpg

admin_model_page.jpg

用户现在可以通过单击选择文件按钮从本地存储上传图像。

注释 2021-09-28 133824.png

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐