From 09b08712b32c4c5ecc6ab74624cd8ec93eaf90e2 Mon Sep 17 00:00:00 2001 From: xianfuxing Date: Wed, 18 Jul 2018 21:18:23 +0800 Subject: [PATCH] =?UTF-8?q?#=20=E5=88=9D=E6=AD=A5user=20detail=20api=20vie?= =?UTF-8?q?w?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/accounts/api/urls.py | 3 ++- apps/accounts/api/views.py | 25 ++++++++++++++++++++++--- mosqkiller/settings.py | 2 +- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/apps/accounts/api/urls.py b/apps/accounts/api/urls.py index a18e649..97001be 100644 --- a/apps/accounts/api/urls.py +++ b/apps/accounts/api/urls.py @@ -1,8 +1,9 @@ from django.urls import path -from .views import UserLoginAPIView +from .views import UserLoginAPIView, UserDetailAPIView app_name = 'users-api' urlpatterns = [ path('login/', UserLoginAPIView.as_view(), name='login'), + path('info/', UserDetailAPIView.as_view(), name='info'), ] \ No newline at end of file diff --git a/apps/accounts/api/views.py b/apps/accounts/api/views.py index e65ae04..3d1cf0c 100644 --- a/apps/accounts/api/views.py +++ b/apps/accounts/api/views.py @@ -1,10 +1,13 @@ from django.contrib.auth import get_user_model from django.db.models import Q +from rest_framework import serializers from rest_framework.response import Response -from rest_framework.status import HTTP_201_CREATED, HTTP_400_BAD_REQUEST +from rest_framework.status import HTTP_200_OK, HTTP_201_CREATED, HTTP_400_BAD_REQUEST from rest_framework.views import APIView -from rest_framework.permissions import AllowAny -from .serializers import UserLoginSerializer +from rest_framework.generics import RetrieveAPIView +from rest_framework.permissions import AllowAny, IsAuthenticated +from rest_framework_jwt.serializers import VerifyJSONWebTokenSerializer +from .serializers import UserLoginSerializer, UserDetailSerializer from django.contrib.auth.backends import ModelBackend User = get_user_model() @@ -32,3 +35,19 @@ class UserLoginAPIView(APIView): return Response(login_data, HTTP_201_CREATED) else: return Response(serializer.errors, HTTP_400_BAD_REQUEST) + + +class UserDetailAPIView(RetrieveAPIView): + serializer_class = UserDetailSerializer + permission_classes = [AllowAny] + + def get(self, request, *args, **kwargs): + token = request.GET.get('token', None) + data = {'token': token} + try: + valid_data = VerifyJSONWebTokenSerializer().validate(data) + user = valid_data['user'] + serializer = self.get_serializer(user) + return Response(serializer.data, HTTP_200_OK) + except serializers.ValidationError as v: + print("validation error", v) diff --git a/mosqkiller/settings.py b/mosqkiller/settings.py index cdd4a72..48a5183 100644 --- a/mosqkiller/settings.py +++ b/mosqkiller/settings.py @@ -140,7 +140,7 @@ STATIC_URL = '/static/' REST_FRAMEWORK = { 'DEFAULT_RENDERER_CLASSES': ( 'rest_framework.renderers.JSONRenderer', - # 'rest_framework.renderers.BrowsableAPIRenderer', + 'rest_framework.renderers.BrowsableAPIRenderer', ), # 'DEFAULT_PARSER_CLASSES': ( # 'rest_framework.parsers.JSONParser',