Django Rest Framework certified components

'' ' 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
views.py
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()),

 

Guess you like

Origin www.cnblogs.com/cou1d/p/12342689.html