python - 在 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')
有没有一种干净的方法来完成这项工作?这也是我想做的正确方法吗?
解决方案
您可以遍历正文键,使用正则表达式重命名键并添加到新字典。
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()}
推荐阅读
- azure-functions - Azure Functions CosmosDb 输出绑定 ConnectionStringSetting 的存储位置
- laravel - 如何获取 AWS S3 中使用 Laravel 中的存储门面访问的图像的尺寸?
- c++ - Mysql C++ 连接器中的批量插入
- perl - 如何在 perl 中使用 Term::Cap 模块在特定的行和列显示语句
- ios - 从 firebase 获取 UI 图像与在 .text 中获取 UI 标签有何不同,以及从图像获取中产生的潜在问题是什么?
- sql - 将多边形内所有点的平均值保留到新字段
- javascript - 保持 Bootstrap-datetimepicker 在按下回车键时始终打开
- java - 在 Maven JAXB 插件中出现“无法创建目录”错误,但只有一次
- php - 在计数时更新 mysql 行
- php - GET 方法的问题:请求显示错误数据