这是一个初学者的问题。
我最初是这样声明该字段的:
from django.db import models
from django.core.validators import FileExtensionValidator
def user_directory_path(instance, filename):
"""
Code to return the path
"""
class Project(models.Model):
"""
"""
# ...Some model fields...
# Right now I'm only validating and testing with .mp4 files.
video_file = models.FileField(
upload_to=user_directory_path,
validators=[FileExtensionValidator(allowed_extensions=['mp4'])]
)
但我在几个地方读到,最好使用它libmagic
来检查文件的幻数并确保其内容与扩展名和 MIME 类型匹配。我对此很陌生,所以我可能会弄错一些东西。
我按照验证器参考编写了一个使用magic
. 该文档还讨论了“带有方法的类”,这里__cal__()
获得最多支持的答案使用基于类的验证器。文档说这可以“对于更复杂或可配置的验证器”来完成,但我不明白具体的例子是什么,以及我的基于函数的验证器是否足以满足我想要做的事情。我想是的,但我没有经验来确定。
这就是我所拥有的。
models.py
from django.db import models
from .validators import validate_media_file
def user_directory_path(instance, filename):
"""
Code to return the path
"""
class Project(models.Model):
"""
"""
# ...Some model fields...
# Right now I'm only validating and testing with .mp4 files.
video_file = models.FileField(
upload_to=user_directory_path,
validators=[validate_media_file]
)
迁移工作与此相关。我还使用扩展名为 .mp4 的纯文本文件进行了测试,然后使用不同的文件(和扩展名)对其进行了测试,并且它可以工作。但是,我想知道使用它而不是基于类的验证器是否会丢失一些东西,而且,正如标题所说,我应该何时使用它,因为我可能会遇到另一种情况,在这种情况下我会需要知道它。
我知道我没有包含 MIME 类型;我可以稍后再做。
magic.from_buffer()作为另一个问题,当输出与扩展名和/或 MIME 类型不匹配时,适当的错误消息是什么?我想到了“文件已损坏”的说法,但我不确定。实际上,这是直接基于幻数的输出吗?
慕尼黑5688855
相关分类