首页 > 解决方案 > 在 django 中验证 POST 请求的正文

问题描述

我在 django 中有一个视图,它注册了一个客户端,我有一个客户端模型和一个看起来像这样的表单:

from django.forms import ModelForm
from api.models.client import Client


class SignUpForm(ModelForm):
    class Meta:
        model = Client
        fields = ['first_name', 'last_name']

在我看来,我想验证请求中的数据,但我的问题是请求中的参数是camelCase 而不是snake_case,所以当我尝试验证数据时它不起作用。

def sign_up(request):
    body = json.loads(request.body)
    form = SignUpForm(body)
    print(form.is_valid())
    return HttpResponse('this is a test response')

有没有一种干净的方法来完成这项工作?这也是我想做的正确方法吗?

标签: pythondjango

解决方案


您可以遍历正文键,使用正则表达式重命名键并添加到新字典。

def camel_to_snake(val):
    return re.sub('([A-Z]+)', r'_\1', val).lower()

body = json.loads(request.body)
new_body = {camel_to_snake(k): v for k, v in body.items()}

推荐阅读