'' ' The user authentication section ' '' # User authentication section: to write a data interface from django.utils.httpwrappers Import jsonResponse from .utils Import The get_token from rest_framework.exceptions Import ApiException class userview (APIView): DEF POST (Self, Request): # define the return message body Response = dict () # define the required user information Fields = { " username " , " password " } # define a user dictionary information user_info = dict() if fields.issubset(set(request.data.keys())): # username = request.data.get("username") # password = request.data.get("password") for key in fields: user_info[key] = request.data[key] user_instance = models.UserInfo.objects.filter(**user_info).first() if user_instance is not None: access_token = get_token.genertate_token() models.UserToken.objects.update_or_create(user=user_instance, defaults={ 'token': access_token }) response["status_code"] = 200 response["status_message"] = "登录成功" response["access_token"] = access_token response["user_role"] = user_instance.get_usertype_id_display() else: response["status_code"] = 201 response["status_message" ] = " Login failed for user name or password is incorrect " return jsonResponse (the Response) # define a class certification class USERAUTH (): DEF authenticate_header (Self): Pass DEF the authenticate (Self, Request): user_token = request.query_params.get ( " token " ) the try : # Gets token token = models.UserToken.objects.get (token = user_token) return token.user.username, token.token the except Exception: The raiseApiException ( " No certification " ) from rest_framework.viewsets Import ModelViewSet class BookView (ModelViewSet): # designated class in the authentication data interface which requires authentication authentication_classes = [USERAUTH] QuerySet = models.Book.objects.all () serializer_class = BookSerizlizer
Import UUID # Create random string used as a token DEF genertate_token (): RES . = STR (uuid.uuid4 ()) Replace ( ' - ' , '' ) return RES
re_path(r'user/$',views.UserView.as_view()),