Browse Source

rest_framework简单校验

wangwei 4 years ago
parent
commit
cf231811f0

BIN
server/api/__pycache__/serializers.cpython-38.pyc


BIN
server/api/__pycache__/urls.cpython-38.pyc


BIN
server/api/__pycache__/views.cpython-38.pyc


+ 10 - 2
server/api/serializers.py

@@ -14,9 +14,17 @@ from api.models import *
 
 
 # 通过模型生成序列化器
-class UserSerializer(serializers.Serializer):
+class UserSerializer(serializers.ModelSerializer):
     class Meta:
-        models = User
+        model = User
+        fields = ["username", "password"]
+        # fields = "__all__"
+        # exclude = ["token"]
+
+
+class MenuSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = Menu
         # fields = []
         # fields = "__all__"
         # exclude = []

+ 23 - 12
server/api/views.py

@@ -4,6 +4,8 @@ from django.views.generic import View
 # from . import models
 from .models import User, Menu
 from django.core.serializers import serialize
+from rest_framework.views import APIView
+from api.serializers import *
 import json
 
 # Create your views here.
@@ -159,23 +161,32 @@ class getUserList(View):
             return JsonResponse({'code': 1, 'type': 'error', 'message': 'no role,create role'}, json_dumps_params={"ensure_ascii": False})
 
 
-class addUser(View):
+class addUser(APIView):
+    serialize_class = UserSerializer
+
     def post(self, request):
-        data = json.loads(request.body)
-        menuIdList = data.pop('menus')
-        menus = Menu.objects.all().filter(id__in=menuIdList)
-        # print(menus)
-        # data.menus = menus
-        print(data)
-        print('--------------data------------')
-        if User.objects.all().filter(username=data.get('username')):
-            return JsonResponse({'code': 1, 'type': 'error', 'message': '该角色名已被占用'}, json_dumps_params={"ensure_ascii": False})
-        else:
+        res = json.loads(request.body)
+        userSer = UserSerializer(data=res)
+        if userSer.is_valid():
+            res = json.loads(request.body)
+            menuIdList = res.pop('menus')
+            menus = Menu.objects.all().filter(id__in=menuIdList)
             data['token'] = data.get('username') + 'token'
             userObj = User.objects.create(**data)
             userObj.menus.set(menus)
-
             return JsonResponse({'code': 0, 'result': {'data': '角色创建成功'}}, json_dumps_params={"ensure_ascii": False})
+        else:
+            print(userSer.errors)
+            return JsonResponse({'code': 1, 'type': 'error', 'message': '字段校验未通过', "result": userSer.errors}, json_dumps_params={"ensure_ascii": False})
+
+        # if User.objects.all().filter(username=data.get('username')):
+        #     return JsonResponse({'code': 1, 'type': 'error', 'message': '该角色名已被占用'}, json_dumps_params={"ensure_ascii": False})
+        # else:
+        #     data['token'] = data.get('username') + 'token'
+        #     userObj = User.objects.create(**data)
+        #     userObj.menus.set(menus)
+
+        #     return JsonResponse({'code': 0, 'result': {'data': '角色创建成功'}}, json_dumps_params={"ensure_ascii": False})
 
 
 class editUser(View):

BIN
server/server/__pycache__/settings.cpython-38.pyc


+ 2 - 1
server/server/settings.py

@@ -38,7 +38,8 @@ INSTALLED_APPS = [
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'api',
-    'corsheaders'
+    'corsheaders',
+    'rest_framework'
 ]
 
 MIDDLEWARE = [

+ 1 - 1
src/views/permission/menu/data.ts

@@ -77,7 +77,7 @@ export const formSchema: FormSchema[] = [
     field: 'component',
     label: '组件路径',
     component: 'Input',
-    // required: true,
+    required: true,
     // show: ({ values }) => isMenu(values.type),
   },
   {