【问题标题】:The same validation for multiple views in django rest frameworkdjango rest框架中多个视图的相同验证
【发布时间】: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)
如何删除所有视图中的重复项?
【问题讨论】:
标签:
python
django
post
django-rest-framework
api-design
【解决方案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)
这里我假设你使用的是基于函数的视图,如果你使用的是基于类的视图方法将是相同的。
希望对您有所帮助。快乐学习。