07 对资源的增删改查处理
- 创建mgr应用目录:python manage.py startapp mgr
- 添加处理请求模块和url路由
- 创建mgr.customer.py 负责对客户类型数据处理
- 创建mgr.order.py 负责对订单类型数据处理
- django不支持直接根据HTTP请求的方法或者请求体里面的参数进行路由
- 临时取消CSRF校验
- 注释掉bysms/settings.py中的MIDDLEWARE配置项里的'django.middleware.csrf.CsrfViewMiddleware'
-
1 # bysms.settings.py 2 MIDDLEWARE = [ 3 'django.middleware.security.SecurityMiddleware', 4 'django.contrib.sessions.middleware.SessionMiddleware', 5 'django.middleware.common.CommonMiddleware', 6 # 'django.middleware.csrf.CsrfViewMiddleware', 7 'django.contrib.auth.middleware.AuthenticationMiddleware', 8 'django.contrib.messages.middleware.MessageMiddleware', 9 'django.middleware.clickjacking.XFrameOptionsMiddleware', 10 ]
- customer增删改查以及和前端集成
-
1 # bysms.urls.py 2 from django.contrib import admin 3 from django.urls import path, include 4 # 静态文件服务声明 5 from django.conf.urls.static import static 6 7 urlpatterns = [ 8 path('admin/', admin.site.urls), 9 # 全路由 10 # path('sales/orders/', list_orders), 11 # 路由子表 12 path('sales/', include('sales.urls')), 13 path('api/mgr/', include('mgr.urls')) 14 ] + static('/', document_root='./z_dist')
-
1 # mgr.urls.py 2 from django.urls import path 3 from mgr import customer 4 5 urlpatterns = [ 6 path('customers', customer.dispatcher), 7 ]
-
1 # mgr.customer.py 2 3 import json 4 5 from django.http import JsonResponse 6 7 from common.models import Customer 8 9 10 def dispatcher(request): 11 # 将请求参数统一放到request 的params的属性中,方便后续处理 12 13 # GET请求 参数在url中,通过request对象的GET属性获取 14 if request.method == 'GET': 15 request.params = request.GET 16 17 # POST/PUT/DELETE 请求参数从request 对象的body属性中获取 18 # 根据接口,POST/PUT/DELETE 请求的消息体都是 json格式 19 elif request.method in ['POST', 'PUT', 'DELETE']: 20 request.params = json.loads(request.body) 21 22 # 根据不同的action分派给不同的函数进行处理 23 action = request.params['action'] 24 if action == 'list_customer': 25 return listcustomers(request) 26 elif action == 'add_customer': 27 return addcustomer(request) 28 elif action == 'modify_customer': 29 return modifycustomer(request) 30 elif action == 'del_customer': 31 return deletecustomer(request) 32 33 else: 34 return JsonResponse({'ret': 1, 'msg': '不支持该类型http请求'}) 35 36 37 def listcustomers(request): 38 # 返回一个 QuerySet 对象,包含所有的表记录 39 qs = Customer.objects.values() 40 41 # 将QuerySet 对象转化为list 类型,否则不能被转化为JSON字符串 42 retlist = list(qs) 43 44 return JsonResponse({'ret': 0, 'retlist': retlist}) 45 46 47 def addcustomer(request): 48 info = request.params['data'] 49 # 从请求消息中,获取要添加客户的信息 50 # 并且插入到数据库中 51 # 返回值就是对应插入记录的对象 52 record = Customer.objects.create(name=info['name'], phonenumber=info['phonenumber'], address=info['address']) 53 54 return JsonResponse({ 55 "ret": 0, 56 "id": record.id 57 }) 58 59 60 def modifycustomer(request): 61 # 从请求消息中 获取修改客户的信息 62 # 找到该客户,并且进行修改操作 63 customerid = request.params['id'] 64 newdata = request.params['newdata'] 65 66 try: 67 # 根据id 从数据库中找到相应的客户记录 68 customer = Customer.objects.get(id=customerid) 69 except Customer.DoesNotExist: 70 return { 71 'ret': 1, 72 'msg': f'id为`{customerid}`的客户不存在' 73 } 74 75 if 'name' in newdata: 76 customer.name = newdata['name'] 77 78 if 'phonenumber' in newdata: 79 customer.phonenumber = newdata['phonenumber'] 80 81 if 'address' in newdata: 82 customer.address = newdata['address'] 83 84 # 注意,一定要执行save才能将修改的信息保存到数据库中 85 customer.save() 86 87 return JsonResponse({'ret': 0}) 88 89 90 def deletecustomer(request): 91 customerid = request.params['id'] 92 93 try: 94 # 根据id 从数据库中找到相应的客户记录 95 customer = Customer.objects.get(id=customerid) 96 except Customer.DoesNotExist: 97 return { 98 'ret': 1, 99 'msg': f'id 为`{customerid}` 的客户不存在' 100 } 101 102 # delete 方法就将该记录从数据库中删除了 103 customer.delete() 104 return JsonResponse({'ret': 0})
-

浙公网安备 33010602011771号