我看到很多使用Django应用程序的人在上传图像后会自动删除图像。这对某些情况来说是好的,但我不想这样做。相反,我只是想强制用户上传一个已经是正确大小的文件。
我想有一个ImageField,我迫使用户上传的图像是100x200。如果他们上传的图像不完全是这样的大小,我希望管理表格返回无效。我也希望能够为纵横比做同样的事情。我想迫使用户上传的图像是16:9,并拒绝任何上传不符合。
我已经知道如何获取图像的宽度和高度,但在图像上传和表单成功提交之前,我无法在服务器端执行此操作。如果可能的话,我怎么能更早地检查这个?
5条答案
按热度按时间ou6hu8tu1#
正确的做法是在表单验证期间执行此操作。
一个简单的例子(稍后将编辑/整合更多信息):
ctrmrzij2#
在模型文件中使用此函数,
tzxcd3kk3#
我们也可以使用**
class
和__call__()
**方法来提供一些 * 参数 。正如在编写验证器- Django脚本 * 中所建议的:
您也可以使用带有
__call__()
方法的类来实现更复杂或可配置的验证器。例如,RegexValidator
就使用了这种技术。如果在validators
model field选项中使用了基于类的验证器,则需要通过添加 *deconstruct()
* 和__eq__()
**方法来确保迁移框架可以序列化。下面是一个工作示例:
而在模型中:
falq053o4#
以上答案的更新和Models.py版本
y53ybaqx5#
这可能是一个欺骗/非常类似于这个问题:
Using jQuery, Restricting File Size Before Uploading
我不认为有一种方法可以做到你想要的方式。Agos解决方案是要走的路...
**编辑:**链接SO问题中的一个答案谈到了使用Flash来完成。因此,虽然它可能会做一些其他的技术,我不认为你可以做它与直接JavaScript。