修改用户信息api

This commit is contained in:
zemal 2017-07-04 10:26:02 +08:00
parent 78a8999b44
commit b931724c9b
4 changed files with 13 additions and 26 deletions

View File

@ -35,6 +35,7 @@ class UserSerializer(serializers.ModelSerializer):
class UserProfileSerializer(serializers.ModelSerializer): class UserProfileSerializer(serializers.ModelSerializer):
user = UserSerializer()
class Meta: class Meta:
model = UserProfile model = UserProfile

View File

@ -1,11 +1,10 @@
from django.conf.urls import url from django.conf.urls import url
from ..views.user import (SSOAPI, AvatarUploadAPI, TwoFactorAuthAPI, from ..views.user import (SSOAPI, AvatarUploadAPI, TwoFactorAuthAPI,
UserNameAPI, UserInfoAPI, UserProfileAPI) UserNameAPI, UserProfileAPI)
urlpatterns = [ urlpatterns = [
url(r"^username/?$", UserNameAPI.as_view(), name="user_name_api"), url(r"^username/?$", UserNameAPI.as_view(), name="user_name_api"),
url(r"^user/(?P<username>\w+)/?$", UserInfoAPI.as_view(), name="user_info_api"),
url(r"^profile/?$", UserProfileAPI.as_view(), name="user_profile_api"), url(r"^profile/?$", UserProfileAPI.as_view(), name="user_profile_api"),
url(r"^avatar/upload/?$", AvatarUploadAPI.as_view(), name="avatar_upload_api"), url(r"^avatar/upload/?$", AvatarUploadAPI.as_view(), name="avatar_upload_api"),
url(r"^sso/?$", SSOAPI.as_view(), name="sso_api"), url(r"^sso/?$", SSOAPI.as_view(), name="sso_api"),

View File

@ -15,11 +15,12 @@ from utils.shortcuts import rand_str
from ..decorators import login_required from ..decorators import login_required
from ..models import User, UserProfile from ..models import User, UserProfile
from ..serializers import (SSOSerializer, TwoFactorAuthCodeSerializer, from ..serializers import (SSOSerializer, TwoFactorAuthCodeSerializer,
UserSerializer, UserProfileSerializer, UserProfileSerializer,
EditUserProfileSerializer, AvatarUploadForm) EditUserProfileSerializer, AvatarUploadForm)
class UserNameAPI(APIView): class UserNameAPI(APIView):
@method_decorator(ensure_csrf_cookie)
def get(self, request): def get(self, request):
""" """
Return Username to valid login status Return Username to valid login status
@ -37,37 +38,22 @@ class UserNameAPI(APIView):
}) })
class UserInfoAPI(APIView):
# @login_required
@method_decorator(ensure_csrf_cookie)
def get(self, request, **kwargs):
"""
Return user info api
"""
try:
user = User.objects.get(username=kwargs["username"])
except User.DoesNotExist:
return self.error("User does not exist")
profile = UserProfile.objects.get(user=user)
dit = UserProfileSerializer(profile).data
dit["user"] = UserSerializer(user).data
return self.success(dit)
class UserProfileAPI(APIView): class UserProfileAPI(APIView):
@login_required @login_required
def get(self, request): def get(self, request, **kwargs):
""" """
Return user info api Return user info according username or user_id
""" """
username = request.GET.get("username")
try: try:
user = User.objects.get(id=request.user.id) if username:
user = User.objects.get(username=username)
else:
user = request.user
except User.DoesNotExist: except User.DoesNotExist:
return self.error("User does not exist") return self.error("User does not exist")
profile = UserProfile.objects.get(user=user) profile = UserProfile.objects.get(user=user)
dit = UserProfileSerializer(profile).data return self.success(UserProfileSerializer(profile).data)
dit["user"] = UserSerializer(user).data
return self.success(dit)
@validate_serializer(EditUserProfileSerializer) @validate_serializer(EditUserProfileSerializer)
@login_required @login_required

View File

@ -65,6 +65,7 @@ class APIView(View):
for parser in self.request_parsers: for parser in self.request_parsers:
if content_type.startswith(parser.content_type): if content_type.startswith(parser.content_type):
break break
# else means the for loop is not interrupted by break
else: else:
raise ValueError("unknown content_type '%s'" % content_type) raise ValueError("unknown content_type '%s'" % content_type)
if body: if body: