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})
posted @ 2025-12-05 23:47  理想赵雷  阅读(3)  评论(0)    收藏  举报