Django ImageField - 在模型中使用它的简单步骤
Django ImageField 到底是什么? Django 模型中的 imageField 是 FileField 的一部分,它为您的模型添加图像存储功能。尽管在您的模型上使用此字段有点容易,但大多数时候您必须小心,因为它会很快变得复杂。我写的这篇文章将带您逐步了解如何在模型上有效地使用图像字段。 使用 imageField 安装枕头 首先,在将图像字段添加到您的模型之前,您需要安装枕头库(这
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
上述函数将运行开发服务器。登录到管理环境,查看图像字段。
用户现在可以通过单击选择文件按钮从本地存储上传图像。
更多推荐
所有评论(0)