栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django ImageField 一些内置属性

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django ImageField 一些内置属性

下面引用来自Django的官方文档

管理文件 | Django 文档 | Django

  在模型中使用文件¶

当您使用FileField或ImageField时,Django提供了一组处理文件的API。

考虑下面的模型,使用ImageField来存储照片:

from django.db import models

class Car(models.Model):
    name = models.CharField(max_length=255)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    photo = models.ImageField(upload_to='cars')

任何Car实例将拥有一个photo属性,你可以使用它来获取附加照片的详情:

>>> car = Car.objects.get(name="57 Chevy")
>>> car.photo

>>> car.photo.name
'cars/chevy.jpg'
>>> car.photo.path
'/media/cars/chevy.jpg'
>>> car.photo.url
'http://media.example.com/cars/chevy.jpg'

car.photo是一个File对象,这意味着它拥有以下所描述的所有方法和属性。

注解

文件在数据库中作为保存模型的一部分,因此在模型被保存之前,不能依赖磁盘上使用的实际文件名。

例如,您可以通过将文件名设置为相对于文件存储位置的路径来更改文件名(如果您正在使用FileSystemStorage替换的,则为MEDIA_ROOT)。

>>> import os
>>> from django.conf import settings
>>> initial_path = car.photo.path
>>> car.photo.name = 'cars/chevy_ii.jpg'
>>> new_path = settings.MEDIA_ROOT + car.photo.name
>>> # Move the file on the filesystem
>>> os.rename(initial_path, new_path)
>>> car.save()
>>> car.photo.path
'/media/cars/chevy_ii.jpg'
>>> car.photo.path == new_path
True

注解

虽然ImageField无图像数据属性,比如height,width和size在实例上可用,但不重新打开图片的时候,无法使用底层图像数据比如:

>>> from PIL import Image
>>> car = Car.objects.get(name='57 Chevy')
>>> car.photo.width
191
>>> car.photo.height
287
>>> image = Image.open(car.photo)
# Raises ValueError: seek of closed file.
>>> car.photo.open()

>>> image = Image.open(car.photo)
>>> image
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/829439.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号