123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- from django.shortcuts import render, redirect, HttpResponse
- from django.http import JsonResponse, HttpResponseRedirect
- from django.views.generic import View
- # from . import models
- from .models import User, Menu
- from django.core.serializers import serialize
- import json
- # Create your views here.
- def index(request):
- data = {
- 'name': {
- 'firstname': 'Tom',
- 'lastname': 'john'
- },
- 'age': 18,
- 'sex': '男'
- }
- return JsonResponse(data, json_dumps_params={"ensure_ascii": False})
- # class cbv(View):
- # def get(self,request):
- # print(request)
- # print(request.GET.get('username'))
- # return JsonResponse({'method':'get','data':request.GET})
- # def post(self,request):
- # return JsonResponse({'method':'post','data':request.POST})
- # def put(self,request):
- # return JsonResponse({'method':'put'})
- # def delete(self,request):
- # return JsonResponse({'method':'delete'})
- # class extend_cbv(cbv):
- # # 重写post请求
- # def post(self,request):
- # return JsonResponse({'method':'post','msg':'重写post请求'},json_dumps_params={"ensure_ascii":False})
- def format_useinfo(user):
- format_user = json.loads(
- serialize('json', user, ensure_ascii=False)
- )
- for item in format_user:
- res = item.get('fields')
- res['userId'] = item.get('pk')
- res['roles'] = [
- {
- 'roleName': res.get('roleName'), 'value': res.get('value')
- }
- ]
- res.pop('roleName')
- res.pop('value')
- res.pop('password')
- return res
- def format_login_result(user):
- format_user = json.loads(
- serialize('json', user, ensure_ascii=False)
- )
- for item in format_user:
- res = {}
- res['userId'] = item.get('pk')
- res['token'] = item.get('fields').get('token')
- res['roles'] = [
- {
- 'roleName': item.get('fields').get('roleName'), 'value': item.get('fields').get('value')
- }
- ]
- return res
- def format_menus(data):
- # 一级菜单列表(无父id)
- menus = []
- # 子菜单列表
- childrens = []
- for item in data:
- item['fields']['id'] = item.get('pk')
- # 将某些字段合并处理成前台需要的路由结构
- item['fields']['meta'] = {
- "title": item.get('fields').get('title'),
- "affix": item.get('fields').get('affix'),
- "icon": item.get('fields').get('icon'),
- }
- # 删除多余字段
- item['fields'].pop('title')
- item['fields'].pop('affix')
- item['fields'].pop('icon')
- if (item.get('fields').get('parent') == None):
- menus.append(item.get('fields'))
- else:
- childrens.append(item.get('fields'))
- for children in childrens:
- # 将列表转化成树形菜单
- getTree(children, menus, childrens)
- return menus
- """
- def getTree(children, menus, childrens)
- 根据传递过来的父菜单id,递归设置各层次父菜单的子菜单列表
- :children: 单个子菜单
- :param menus: 父菜单列表 一级菜单
- :childrens: 子菜单列表,第二次调用
- """
- def getTree(children, menus, childrens):
- # 遍历父菜单
- for m in menus:
- # 当前菜单的id 和 子菜单的父id 是否匹配
- if m.get('id') == children.get('parent'):
- if not m.get('children'):
- m['children'] = []
- if not children in m['children']: # 判单子菜单是否已存在
- m['children'].append(children)
- if m.get('children'):
- for children in childrens:
- # 判断子菜单是否还有匹配的子菜单
- getTree(children, m.get('children'), childrens)
- class login(View):
- def post(self, request):
- data = json.loads(request.body)
- user = User.objects.all().filter(username=data.get(
- 'username'), password=data.get('password'))
- if user:
- print('-------user---------')
- print(user)
- res = format_login_result(user)
- print('---------------res--------')
- print(res)
- return JsonResponse({'code': 0, 'msg': 'success', 'result': res}, json_dumps_params={"ensure_ascii": False})
- else:
- return JsonResponse({'code': 1, 'error': '用户名或密码不正确'}, json_dumps_params={"ensure_ascii": False})
- class getUserInfoById(View):
- def get(self, request):
- userid = request.GET.get('userId')
- user = User.objects.all().filter(id=userid)
- if user:
- # res = {'codeList': ['1000', '3000', '5000']}
- res = format_useinfo(user)
- return JsonResponse({'code': 0, 'result': res, })
- else:
- return JsonResponse({'code': 1, 'result': {'message': 'error'}}, json_dumps_params={"ensure_ascii": False})
- class add_user(View):
- def post(self, request):
- data = request.POST
- if User.objects.all().filter(username=data.get('username')):
- return JsonResponse({'code': 0, 'error': '该角色名已被创建'})
- else:
- User.objects.create(**data)
- return JsonResponse({'code': 1, 'data': '角色创建成功'})
- class getMenuListById(View):
- def get(self, request):
- querySetObj = Menu.objects.all()
- # querySet 转json对象
- data = json.loads(serialize('json', querySetObj, ensure_ascii=False))
- menus = format_menus(data)
- return JsonResponse({'code': 0, 'result': menus})
- class add_menu(View):
- def post(self, request):
- data = request.POST
- Menu.objects.create(**data)
- return JsonResponse({'code': 1, 'error': '菜单添加成功'})
|