1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
   |  from django.db import models
  class User(models.Model):     username = models.CharField(max_length=32)     password = models.CharField(max_length=32)     user_type = models.IntegerField(choices=((1, '超级用户'), (2, '普通用户'), (3, '二笔用户')))
  class UserToken(models.Model):     user = models.OneToOneField(to='User', on_delete=models.CASCADE)     token = models.CharField(max_length=64)
 
  from rest_framework import serializers from app01 import models class UserSerializer(serializers.ModelSerializer):     class Meta:         model = models.User         fields = '__all__'
 
  import uuid from app01 import models from app01 import serializer from rest_framework.viewsets import ViewSetMixin from rest_framework.generics import CreateAPIView from rest_framework.decorators import action from rest_framework.response import Response
  class UserView(ViewSetMixin, CreateAPIView):     queryset = models.User.objects.all()     serializer_class = serializer.UserSerializer
      @action(methods=['POST'], detail=False)     def login(self, request):         username = request.data.get('username')         password = request.data.get('password')         user = models.User.objects.filter(username=username, password=password).first()         token = uuid.uuid4()                  models.UserToken.objects.update_or_create(defaults={'token': token}, user=user)         if user:             return Response({'msg': '登录成功', "token": token})         else:             return Response({'status': 101, 'msg': '用户名或密码错误'})
 
  from django.contrib import admin from django.urls import path, include from rest_framework.routers import SimpleRouter from app01 import views
  router = SimpleRouter() router.register('user', views.UserView) urlpatterns = [     path('admin/', admin.site.urls),     path('api/', include(router.urls)), ]
 
  |