【补充】用户多方式登陆
【模型表】
from django.db import models
# Create your models here.
from django.contrib.auth.models import AbstractUser
class UserInfo(AbstractUser):
phone = models.CharField(max_length=32)
【序列化类】
【视图】
from django.shortcuts import render
# Create your views here.
from rest_framework.viewsets import ViewSet
from app01 import models
from app01.serializers.user_serializer import UserSerializer
from rest_framework.response import Response
class UserView(ViewSet):
back_dict = {"code": 200, "msg": ""}
def login(self, request):
# (1)得到序列化类
user_ser = UserSerializer(data=request.data)
if user_ser.is_valid():
user = user_ser.user
token = user_ser.token
self.back_dict["token"] = token
self.back_dict["msg"] = "登陆成功"
self.back_dict["username"] = user.username
return Response(self.back_dict)
else:
self.back_dict["code"] = 101
self.back_dict["msg"] = user_ser.errors
return Response(self.back_dict)
【路由】
from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('login/', views.UserView.as_view({
"post": "login"
})),
]
【配置文件】
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01.apps.App01Config',
'rest_framework'
]
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False
AUTH_USER_MODEL = 'app01.UserInfo'