Managing files
Using files in models
The File object
File storage
Storage objects

参考: http://docs.djangoproject.com/en/dev/topics/files/

Managing files

本手册描述 Django 的 file access APIs

默认情况下, Django 使用 settings 里面的 MEDIA_ROOT 和 MEDIA_URL 参数, 在本地存放文件。

但是, Django 也提供了很多方法定制 "file storage system",以便可以自由 决定何时何地如何存放文件。本文档第二件事情就是介绍 Django 的 "file storage system" ,以便可以定制。

Using files in models

如果使用了 FileField 和 ImageField , Django 提供一些实用的 APIs 细节操 作。下面示例使用了 ImageField :

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
<ImageFieldFile: chevy.jpg>
>>> car.photo.name
u'cars/chevy.jpg'
>>> car.photo.path
u'/media/cars/chevy.jpg'
>>> car.photo.url
u'http://media.example.com/cars/chevy.jpg'

上面实例里的 car.photo 使用 File 对象, 拥有 File 对象的所有方法和属性。

The File object

内部,Django 在想表示一个 File 对象时,总是使用 django.core.files.File 类。这是 Python 内置的 File 类的一个简单封装,绑定了一些 Django 信息。

File storage

DEFAULT_FILE_STORAGE 定义了 Django 的默认 file storage 。

Storage objects