DATA_UPLOAD_MAX_MEMORY_SIZE不限制POST发送的数据大小

时间:2018-10-10 04:59:42

标签: django curl

在我的django项目中,DATA_UPLOAD_MAX_MEMORY_SIZE的值为2.5MB。但是我可以使用+10MBbase64 image数据curl发送到服务器。
如何限制请求,以及为什么env在我的情况下不起作用?

1 个答案:

答案 0 :(得分:1)

基于有关DATA_UPLOAD_MAX_MEMORY_SIZE的Django docs

  

在引发SuspiciousOperation(RequestDataTooBig)之前,请求正文可能达到的最大大小(以字节为单位)。该检查是在访问request.body或request.POST时完成的,并根据请求的总大小(不包括任何文件上传数据)进行计算。

通过使用django rest框架序列化器,您可以在序列化器中添加验证器,并检查文件大小,例如以下代码:

from rest_framework import serializers

def file_validator(file):
    """
    file validator
    check max file size allowed for file
    :param file:
    :return:
    """
    max_file_size = 1024 * 1024 * 2  # 2MB
    if file.size > max_file_size:
        raise serializers.ValidationError(_('Max file size is {} and your file size is {}'.
                                          format(max_file_size, file.size)))


class FileSerializer(serializers.Serializer):
    file = serializers.FileField(validators=[file_validator])