📅  最后修改于: 2023-12-03 14:41:11.400000             🧑  作者: Mango
FileField 是 Django 中的一种模型字段,用于存储上传的文件。FileField 可以作为您的 Django 应用程序中任何模型的字段之一,因此您可以将文件添加到您的模型中,并将它们存储在服务器上。
要创建一个简单的 FileField,您需要使用 models.FileField 类。该类需要两个参数:
from django.db import models
class MyModel(models.Model):
file = models.FileField(upload_to='uploads/', null=True)
以上代码将创建一个名为“file”的 FileField 字段,用于存储上传到 “uploads/” 目录下的文件。由于 null=True,该字段可以为 Null。
要访问上传的文件,您可以使用文件的相对 URL,如下所示:
mymodel = MyModel.objects.get(pk=1)
mymodel.file.url
输出:
'/media/uploads/myfile.jpg'
将上述 URL 传递给客户端即可在浏览器上查看文件。
在某些情况下,您可能希望验证上传的文件。例如,您可能希望文件仅为特定类型,如 PNG 或 PDF,或者文件大小在一定范围内。
为了验证上传的文件,您可以使用 validators 属性。 validators 属性允许您使用 Django 内置的验证器,也可以创建自己的自定义验证器。
from django.core.validators import FileExtensionValidator, MaxFileSizeValidator
class MyModel(models.Model):
file = models.FileField(upload_to='uploads/', null=True,
validators=[FileExtensionValidator(['pdf', 'docx']),
MaxFileSizeValidator(50 * 1024 * 1024)])
以上代码用于验证上传的文件必须是 pdf 或 docx 类型,并且文件大小不得超过 50 MB。
如果您需要存储图像文件,可以使用 ImageField 字段。该字段是 FileField 的子类,与 FileField 相同,但还提供有关图像的额外属性和实用程序方法。
from django.db import models
class MyModel(models.Model):
image = models.ImageField(upload_to='images/', null=True)
FileField 让您可以轻松上传和存储文件。您可以使用 FileField 为 Django 应用程序中的任何模型添加文件上传功能。在使用时,请务必记住要正确验证和处理上传的文件。