提到数据库,就免不了对信息的增删查改,今天来做一个管理员用户对顾客数据的增删查改功能。
一、新建管理员用户
python manage.py startapp mgr
二、创建多个模块文件分别处理不同的http请求(这里先创建customer.py)
三、编写一个类似路由的函数专门分配函数对浏览器发来的请求进行处理
def dispatcher(request):
if request.method == 'GET':
request.params = request.GET
elif request.method in ['POST','PUT','DELETE']: # POST/PUT/DELETE 请求 参数 从 request 对象的 body 属性中获取
request.params = json.loads(request.body) # 根据接口,POST/PUT/DELETE 请求的消息体都是 json格式
action = request.params['action']
if action == 'list_customer':
return listcustomers(request)
elif action == 'add_customer':
return addcustomer(request)
elif action == 'modify_customer':
return modifycustomer(request)
elif action == 'del_customer':
return deletecustomer(request)
else:
return JsonResponse({'ret': 1, 'msg': '没有相应的http请求'})
四、定义路由文件
1、定义总路由文件:path(‘api/mgr/’, include(‘mgr.urls’)),
2、定义mgr子路由表:
urlpatterns = [
path('customers', customer.dispatcher),
]
这样一来,但凡是 API 请求url为 /api/mgr/customers,都交由dispatch函数进行分派处理
五、增删查改的基本操作
1、增删查改中的——“查”操作如下:
def listcustomers(request):
# 返回一个 QuerySet 对象 ,包含所有的表记录
qs = Customer.objects.values()
retlist = list(qs) # 将 QuerySet 对象 转化为 list 类型,否则不能 被 转化为 JSON 字符串
return JsonResponse({'ret': 0, 'retlist': retlist})
2、增删查改中的——“增”操作如下:
def addcustomer(request):
info = request.params['data']
# 从请求消息中 获取要添加客户的信息,并且插入到数据库中,返回值就是对应插入记录的对象
record = Customer.objects.create(name=info['name'] ,
phonenumber=info['phonenumber'] ,
address=info['address'])
return JsonResponse({'ret': 0, 'id':record.id})
3、增删查改中的——“改”操作如下:
#修改
def modifycustomer(request):
customerid = request.params['id'] # 从请求消息中 获取修改客户的信息
newdata = request.params['newdata'] # 找到该客户,并且进行修改操作
try:# 根据 id 从数据库中找到相应的客户记录
customer = Customer.objects.get(id=customerid)
except Customer.DoesNotExist:
return {
'ret': 1,
'msg': f'id 为`{customerid}`的客户不存在'
}
if 'name' in newdata:
customer.name = newdata['name']
if 'phonenumber' in newdata:
customer.phonenumber = newdata['phonenumber']
if 'address' in newdata:
customer.address = newdata['address']
customer.save() # 注意,一定要执行save才能将修改信息保存到数据库
return JsonResponse({'ret': 0})
4、增删查改中的——“删”操作如下:
def deletecustomer(request):
customerid = request.params['id']
try:
customer = Customer.objects.get(id=customerid) # 根据 id 从数据库中找到相应的客户记录
except Customer.DoesNotExist:
return {
'ret': 1,
'msg': f'id 为`{customerid}`的客户不存在'
}
# delete 方法就将该记录从数据库中删除了
customer.delete()
return JsonResponse({'ret': 0})
这样一来,对于后台数据的增删查改基本操作就完成了,其他数据如货物数据、销售员管理等数据就以此类推。
六、注释掉CSRF安全校验
因为Django中有一个对于消息的CSRF校验,由于我们现在还没有到开发前端这一步,所以先注释掉该校验,以便直接通过校验,为后端测试提供通畅环境。注释方法如下:
打开项目配置文件中的setting.py。
将'django.middleware.csrf.CsrfViewMiddleware'
注释掉。