Django Rest框架——屏蔽响应值



我想知道屏蔽某些响应部分的最佳方法是什么。我将用一个例子来解释。假设我有一个Person模型,有first_name,last_nameemail。我使用PersonSerializer返回该数据。

一个示例响应可以是

{
"first_name": "John",
"last_name": "Doe",
"email": "johndoe@gmail.com"
}

我想"隐藏"将电子邮件作为回复呈现。我仍然希望它作为键存在,我只是想掩盖这个值。因此,我想通过首先在PersonModel

中设置这个类来实现这个响应类:

class MASK:
mask_fields = (
'email'
...
) //there can be multiple values here

要得到这个响应:

{
"first_name": "John",
"last_name": "Doe",
"email": "__MSK__" // so it get's masked
}

因此,在使用相同的序列化器类创建新患者时,这也不应该影响序列化。

谁知道最好的方法是什么?也许覆盖to_representation方法或?

你可以写你自己的掩码函数

class DemoSerializer(serializers.ModelSerializer):
email = serializers.SerializerMethodField()
class Meta:
model = Demo
fields = ("id","email")

def get_email(self,obj):
email_id = str(id) + "-" + random.randrange(1,9999999) 
# you can write your on Hashing logic
return email_id

对于将来的引用,你可以从"-"得到obj ID

最新更新