django rest框架中多个视图的相同验证

Posted

技术标签:

【中文标题】django rest框架中多个视图的相同验证【英文标题】:The same validation for multiple views in django rest framework 【发布时间】:2020-10-10 19:34:21 【问题描述】:

我创建了许多 API 端点,用于使用 DjangoRestFramework 接受 POST 请求。对于其中的 5/6,我需要在正文中有 1 个键来提供一些数据,因此对于我拥有的每个视图

if (key not in request.data):
  return Response('please provide key', status=400)

如何删除所有视图中的重复项?

【问题讨论】:

使用serializers 【参考方案1】:

您可以在不同的文件中编写一个通用函数并将该函数导入您的views.py 中,这将为每个视图验证是否传递了请求正文中的键。

你的常用函数如下所示 common.py

def get_key(request):
    if (key not in request.data):
        return Response('please provide key', status=400)
    return request.data

您的视图将如下所示。 视图.py

from .common import get_key

    @api_view(['GET'])
    def userDetail(request,pk):
        key = get_key(request) #calling the function to check for key
        if key:
            users = User.objects.get(id=pk)
            serializer = UserSerializer(users, many=False)
            return Response(serializer.data)

这里我假设你使用的是基于函数的视图,如果你使用的是基于类的视图方法将是相同的。

希望对您有所帮助。快乐学习。

【讨论】:

以上是关于django rest框架中多个视图的相同验证的主要内容,如果未能解决你的问题,请参考以下文章

电子邮件验证和密码重置 - django rest 框架和 angularjs

根据另一个字段的值验证 Django 模型字段?

如何查看数据库中是不是有其他用户具有相同的用户名 - JWT Django REST 身份验证

具有社交身份验证和请求发布的 Django Rest 框架(CSRF-Security)

python Django Rest_Framework框架 反序列化时数据校验的三种方法(图文并茂版)

如何在 django rest 框架中验证 jwt 身份验证中的令牌