# 初步user detail api view

This commit is contained in:
xianfuxing 2018-07-18 21:18:23 +08:00
parent d6b1c4e81f
commit 09b08712b3
3 changed files with 25 additions and 5 deletions

View File

@ -1,8 +1,9 @@
from django.urls import path from django.urls import path
from .views import UserLoginAPIView from .views import UserLoginAPIView, UserDetailAPIView
app_name = 'users-api' app_name = 'users-api'
urlpatterns = [ urlpatterns = [
path('login/', UserLoginAPIView.as_view(), name='login'), path('login/', UserLoginAPIView.as_view(), name='login'),
path('info/', UserDetailAPIView.as_view(), name='info'),
] ]

View File

@ -1,10 +1,13 @@
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.db.models import Q from django.db.models import Q
from rest_framework import serializers
from rest_framework.response import Response 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.views import APIView
from rest_framework.permissions import AllowAny from rest_framework.generics import RetrieveAPIView
from .serializers import UserLoginSerializer 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 from django.contrib.auth.backends import ModelBackend
User = get_user_model() User = get_user_model()
@ -32,3 +35,19 @@ class UserLoginAPIView(APIView):
return Response(login_data, HTTP_201_CREATED) return Response(login_data, HTTP_201_CREATED)
else: else:
return Response(serializer.errors, HTTP_400_BAD_REQUEST) 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)

View File

@ -140,7 +140,7 @@ STATIC_URL = '/static/'
REST_FRAMEWORK = { REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': ( 'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.JSONRenderer',
# 'rest_framework.renderers.BrowsableAPIRenderer', 'rest_framework.renderers.BrowsableAPIRenderer',
), ),
# 'DEFAULT_PARSER_CLASSES': ( # 'DEFAULT_PARSER_CLASSES': (
# 'rest_framework.parsers.JSONParser', # 'rest_framework.parsers.JSONParser',