python - 如何处理在 javascript 中生成并在 python DRF 中使用的请求主体 JSON 字段的命名约定差异?

标签 python angularjs rest django-rest-framework naming-conventions

我在 Python DRF 中创建 Rest API,并在浏览器的 angularJS 中使用它。我面临的问题是 javascript 和 python 中变量名命名约定的差异。

Javascript使用驼峰命名法命名变量名,而python使用下划线命名法。

因此,当我通过 angularjs 发送请求时,示例请求 JSON 正文具有以下格式:-

user_dtls = {"firstName": "Mangu Singh", "lastName": "Rajpurohit"}

但在 Python 中,它们表示为 first_namelast_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')

关于python - 如何处理在 javascript 中生成并在 python DRF 中使用的请求主体 JSON 字段的命名约定差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49467112/

相关文章:

python - Networkx 中的图论

javascript - 更好地处理 ajax 调用的附加层

javascript - 如何在递归指令中访问父级?

php - 通过 REST Drupal 8.x 更新用户密码

javascript - Angular 休息调用未定义响应对象属性

java - 以 InputStream 格式将文本文件从 .Net http 客户端上传到 Java REST API

python - django 有效地服务 robots.txt

Pythonic 自定义排序字母等级 'D' 、 'C-' 、...、 'A+' ?

javascript - AngularJS:Font Awesome Like 按钮未显示在 ng-show 下

python - HoverTool 的背景