• Django API view 登录认证


    文件分类

    url

    from django.contrib import admin
    from django.urls import path, re_path
    from django.urls import include
    
    urlpatterns = [
        re_path('^api/(?P<version>[v1|v2]w+)/', include('app01.urls')),
    ]
    from django.urls import path, re_path
    from django.urls import include
    from app01.views import account, coursehost, newspapers
    
    
    urlpatterns = [
        re_path('login/$', account.LoginView.as_view()),
    ]

    view

    """
    * coding: utf-8
    
    CreateTime:2019/12/17
    Version: v1
    DocName: account.py
    Edit: Riven
    Effect: Control the user  login
    SourceStorageLocation: RivenShop / app01 / views / account.py
    Modify and add function record:
            ModifyTime:
                1.
                2.
            Add function Time :
                1.
                2.
    
    """
    
    from app01.models import *
    from utils.response import *
    
    import uuid
    from rest_framework.views import APIView
    from rest_framework.response import Response
    
    
    class LoginView(APIView):
        """
        Interface for user authentication
        """
    
        def post(self, request, *args, **kwargs):
            """
            Authentification of user
            :param request: request correlation data
            :param args: URL transmit args
            :param kwargs: URL transmit kwargs
            """
    
            # acquire status object
            ret = TokenResponse()
            try:
                user = request.data.get('user')
                pwd = request.data.get('pwd')
                user = Account.objects.filter(username=user, password=pwd).first()
                if not user:
                    ret.code = 1001
                    ret.error = '用户名密码错误'
                else:
                    uid = str(uuid.uuid4())
                    UserAuthToken.objects.update_or_create(user=user, defaults={'token': uid})
                    ret.token = uid
    
            except Exception as e:
                ret.code = 1003
    
            # ret.dict == return class init attr of dict
            return Response(ret.dict)

     

    自定义状态码类:

    """
    * coding: utf-8
    
    CreateTime:2019/12/17
    Version: v1
    DocName: response.py
    Edit: Riven
    
    Effect: create status code  return view
    
    SourceStorageLocation: RivenShop / utils / response.py
    
    Modify and add function record:
            ModifyTime:
                1.
                2.
            Add function Time :
                1.
                2.
    
    """
    
    
    class BaseResponse(object):
    
        def __init__(self):
            self.code = 1000
            self.data = None
            self.error = None
    
        @property
        def dict(self):
            return self.__dict__
    
    
    class TokenResponse(BaseResponse):
        def __init__(self):
            super(BaseResponse).__init__()
            self.code = 1000
            self.token = None
  • 相关阅读:
    PAT 甲级 1041 Be Unique (20 分)(简单,一遍过)
    [精]Odoo 8.0深入浅出开发教程-模块开发基础
    iOS开发- UILabel 自己主动换行 及 高度自适应
    Android
    权限管理表结构设计
    创建SQL语句_面试
    Hasen的linux设备驱动开发学习之旅--时钟
    关于源程序到可运行程序的过程
    微信服务号 微信支付开发
    MongoDB基础入门视频教程
  • 原文地址:https://www.cnblogs.com/Rivend/p/12055315.html
Copyright © 2020-2023  润新知