There's a potential race condition between get_available_name and
saving the file; it's possible that two threads might return the
same name, at which point all sorts of fun happens. So we need to
try to create the file, but if it already exists we have to go back
to get_available_name() and try again.
如果您看到类
django.core.files.storage.Storage
的实现,您将知道Django 1.6
如何管理文件名。在查看这个类的
save
方法。在这条线上是在耍花招。在
这是在保存文件之前获取新文件名的默认实现。如果您想编写自己的版本(比如应该重写该文件),那么考虑编写自己的custom storage system
我在你的帮助下仔细看了一下,发现了一些东西:)
所以基本上我要做的是:
谢谢大家:)
附言:如果你感兴趣,来自django.core.file.storage.FileSystemStorage._save的评论说:
实际上,你走的是对的。在
从docs开始
而且
这意味着,当上传文件时,使用默认存储(FileSystemStorage),Django在场景后面将文件的命名(或可用名称)委托给存储,然后存储使用:^{} 。在
因此,如果您想更改上载时文件的命名方式,您需要添加一个自定义文件存储,它基本上只覆盖
get_available_name
。关于此事的文件是here。在相关问题 更多 >
编程相关推荐