【发布时间】:2021-06-02 21:05:14
【问题描述】:
我在哪里创建了一个 api
#urls.py
router = DefaultRouter()
router.register('login', GetUserViewSet, basename='get_user')
urlpatterns = [
path('', include(router.urls)),
]
#views.py
class GetUserViewSet(viewsets.ReadOnlyModelViewSet):
queryset = User.objects.all()
serializer_class = GetProfileSerializer
#serializers.py
class GetProfileSerializer(serializers.ModelSerializer):
class Meta:
model = User
exclude = ('password', 'groups', 'user_permissions')
当我点击“http://localhost:8000/api/login/”时,上面的代码返回用户列表 以及当我点击“http://localhost:8000/api/login/1/”时的特定用户。
这里我想将'mobile_number'传递给api并返回唯一具有手机号码的用户。
我通过将 get_queryset() 添加到视图中来实现它,如下所示。
#views.py
class GetUserViewSet(viewsets.ReadOnlyModelViewSet):
queryset = User.objects.all()
serializer_class = GetProfileSerializer
def get_queryset(self):
mobile_number = self.request.query_params.get('mobile_number')
queryset = User.objects.filter(mobile_number=mobile_number)
return queryset
但上面的代码是在一个数组中返回对象。
我遵循下面给出的常见响应格式
{
"status": true,
"message": "Successfully registered your account.",
"data": {
"id": 1,
"first_name": "User",
"last_name": "U",
"email": "user@gmail.com",
"dial_code_id": "91",
"mobile_number": "9876543211",
}
}
而我无法通过这个 get_queryset() 实现这一点。
请建议我实现这一目标的最佳方法。
【问题讨论】:
标签: django django-models django-rest-framework django-serializer django-rest-viewsets