我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的值.
我正在使用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
知道这里有什么问题.
我正在使用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)