小编use*_*493的帖子

在DRF中的字段级别验证中获取另一个字段的值

Field level Validation在我的序列化器中使用,我有一种情况,我需要第一个字段的值,同时验证第二个字段.我知道在object level validation我可以访问,但我的serailzer有many=True和对象级别验证我不能告诉客户端哪个迭代引起了错误.

Serailzer:

class Keys_Serializer(serializers.Serializer):
    """
    """
    key_id = serializers.IntegerField(required=True)
    key_name = serializers.CharField(required=True)
    value_id = serializers.IntegerField(required=False)

    def validate_key_id(self, value):
        """
        validate key id
        """
         *** validate key_id here ***
        return value

    def validate_value_id(self, value):
        """
        validate value_id w.r.t key_id
        """
         *** I need key_id of current iteration here so that I can validate value_id. ***
        return value
Run Code Online (Sandbox Code Playgroud)

有没有办法在value_id验证中访问key_id的值.

django django-rest-framework

9
推荐指数
2
解决办法
3020
查看次数

Python请求POST不起作用

我正在使用python请求模块来调用API.在我将代码推送到AWS之前,一切正常.即使在AWS上,如果我在开发服务器上工作也是有效的,即ec2.####.amazon.com:8000.

这是我的代码:

r = requests.post(api_url, data = {"var 1":"value", "var 2":"value"})
Run Code Online (Sandbox Code Playgroud)

我的API url不允许使用GET方法,所以作为响应我收到错误,该GET方法不允许,这意味着requests.post读取为get

知道这里有什么问题.

python django amazon-web-services python-requests

5
推荐指数
1
解决办法
4566
查看次数

IV必须为16字节长的AES加密错误

我正在使用pycrypto模块进行AES加密。使用文档,我记下了以下函数,但是它IV must be 16 bytes long总是会出错,但是我使用的是16字节长的IV。

def aes_encrypt(plaintext):
    """
    """
    key = **my key comes here**
    iv = binascii.hexlify(os.urandom(16)) # even used without binascii.hexlify)

    aes_mode = AES.MODE_CBC

    obj = AES.new(key, aes_mode, iv)

    ciphertext = obj.encrypt(plaintext)
    return ciphertext
Run Code Online (Sandbox Code Playgroud)

python encryption pycrypto

4
推荐指数
1
解决办法
1万
查看次数