例如,说我有:
class ContactSerializer(serializers.Serializer):
name = serializers.CharField()
如果提交了意外字段height
,如何引发错误:
ContactSerializer(data={'name': Jim, 'height': '1 mile'})
答案 0 :(得分:1)
这是一个很好的问题。我最初假设DRF函数height
(验证数据)会引发异常。我玩了一些例子,并没有抛出一个。
考虑到这一点,我不确定你是否可以阻止提交意外字段(如果你想要恶作剧)。您只能确保提交到适当字段的数据是有效类型。也就是说,您的序列化程序将忽略Private Sub Button1_Click() Handles Button1.Click
If TryActive() = False Then
Exit Sub
End If
'Your code you want to execute if TryActive() is True
End Sub
Private Function TryActive() as Boolean
Try
AppActivate("your aplication")
Return True
Catch ex As Exception
Dim msgboxresponse = MsgBox("please start your application", 0, "Can't find your application")
If msgboxresponse = MsgBoxResult.Ok Then
Return False
End If
End Try
End Function
字段。
答案 1 :(得分:0)
DRF似乎不容易检查未指定的字段名称。 Marshmellow是另一个功能更丰富的Python库,用于Python中的对象序列化,部分受DRF序列化程序的启发;它允许通过使用模式级别(而不是字段级别)验证(Marshmellow Schema Validation)来进行此类检查。
class MySchema(Schema):
foo = fields.Int()
bar = fields.Int()
@validates_schema(pass_original=True)
def check_unknown_fields(self, data, original_data):
for key in original_data:
if key not in schema.fields:
raise ValidationError('Unknown field name {}'.format(key))
schema = MySchema()
result, errors = schema.load({'foo': 1, 'bar': 2, 'baz': 3})