文件分类
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