我在 Python DRF 中创建 Rest API,并在浏览器的 angularJS 中使用它。我面临的问题是 javascript 和 python 中变量名命名约定的差异。
Javascript使用驼峰命名法命名变量名,而python使用下划线命名法。
因此,当我通过 angularjs 发送请求时,示例请求 JSON 正文具有以下格式:-
user_dtls = {"firstName": "Mangu Singh", "lastName": "Rajpurohit"}
但在 Python 中,它们表示为 first_name 和 last_name。 我正在使用 ModelSerializer,同时根据 field_name 自动读取请求并填充模型字段。
但是,由于请求正文(通过 javascript 发送)和序列化程序中的字段名称不同,我必须编写大量样板代码来进行此转换。
DRF 是否提供任何机制来处理这种情况?处理这种情况的最 pythonic 方法是什么。
提前致谢。
请您参考如下方法:
序列化器中有一个source 选项。使用它,您可以通过覆盖它们来重命名模型序列化程序字段。例如
class UserSerializer(serializer.ModelsSerializer):
firstName = serializer.CharField(source="first_name", max_length=100)
lastName = serializer.CharField(source="last_name", max_length=100)
class Meta:
model = User
fields = ('firstName', 'lastName')
