【超详细Django网站开发过程7】便利店管理系统之——利用管理员用户对客户数据进行增删查改
提到数据库,就免不了对信息的增删查改,今天来做一个管理员用户对顾客数据的增删查改功能。
导航
- 1、增删查改中的——“查”操作如下:
- 2、增删查改中的——“增”操作如下:
- 3、增删查改中的——“改”操作如下:
- 4、增删查改中的——“删”操作如下:
一、新建管理员用户
python manage.py startapp mgr
二、创建多个模块文件分别处理不同的http请求(这里先创建customer.py)
三、编写一个类似路由的函数专门分配函数对浏览器发来的请求进行处理
def dispatcher(request):if request.method == 'GET':request.params = request.GETelif 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'
注释掉。
【超详细Django网站开发过程7】便利店管理系统之——利用管理员用户对客户数据进行增删查改相关推荐
- 【超详细Django网站开发过程9】便利店管理系统之——管理员登录、注销功能
管理系统当然要有管理员登录功能啦,怎么做呢? Lynjay的便利店管理系统,登录API如下: 1.请求消息: POST /api/mgr/signin HTTP/1.1 Content-Type: a ...
- 【超详细Django网站开发过程3】便利店管理系统之——该如何建立超级管理员账户去管理客户信息呢?
便利店老板需要一个超级管理员权限对店内各种信息进行增删查改.以前我们或许还需要专门做一个后台管理界面进行信息交互,现在Django为我们提供了管理员网页来添加.修改.删除自己定义的 model 表数据 ...
- 【超详细Django网站开发过程2】便利店管理系统之——创建数据库→定义数据库表→创建数据库表
假装自己拥有一家小便利店,名叫--7-Twelve,我希望制作一个便利店管理系统对我的顾客.销售人员.货物等数据进行管理,先不管前端,后端总免不了对数据的一顿操作,那如何在Django中对数据库进行增 ...
- 【超详细Django网站开发过程4】便利店管理系统之——销售员如何获取顾客数据?即:读取数据库数据(浏览器请求数据——服务器返回数据)
一个便利店要想运转顺利,肯定要有合理的管理与分配,我们店里的销售人员,也应该成为管理员,拥有一个利用浏览器向服务端访问数据的权限,这篇文章带大家走一个销售员读取数据库客户数据的流程.学会了读取数据库, ...
- 【前端】Vue+Element UI案例:通用后台管理系统-用户管理:Table表格增删查改、Pagination分页、搜索框
文章目录 目标 代码 0.结构 1.按钮-删除 2.按钮-编辑 3.debug 4.样式 5.分页Pagination:功能 6.分页Pagination:样式 7.搜索框:功能 8.搜索框:样式 总 ...
- url获取网站信息不包含网页源文件内的标签_超详细的网站内部seo优化教程
很多人把seo分为站内和站外,也有人把seo分为搜索需求覆盖,收录,排序,展现和数据分析,结果是一样的,看待seo的角度有所不同.网站内部即站内seo优化教程主要从站内讲解如何做seo.另外,一篇文章 ...
- 初学jsp课,一个基于jsp+javabean+servlet+sql server小型房源网站,实现了用户表,房源表,及留言板的增删查改。使用deamwear编译器
1 设计目的 <Web应用开发课程设计>是实践性教学环节之一,是<Web程序设计>课程的辅助教学课程.通过课程设计,使学生掌握Web网站的基本概念,结合实际的操作和设计,巩固课 ...
- Django:数据库表的建立与增删查改(ForeignKey和ManytoMany)
数据库表的创建: 1.Django工程项目建立,基础环境调试. 2.创建表 from django.db import models class Publisher(models.Model): ...
- spring和mybatis结合做简单的增删查改系统_springbootamp;amp;vue简单的景点信息管理系统...
springboot&&vue简单的景点信息管理系统 这两天闲着没有什么事,就根据陈哥的教程,试着写了一个springboot和vue的简单的景点信息管理系统.也就大致实现了最基本的增 ...
最新文章
- Android中 AsyncTask
- Stylus插件开发教程 1
- 框架:Spring的自动装配
- 【powerdesigner】将pdm或者cdm保存为普通图片格式
- 云在物联网中的惊人优势 | 技术头条
- 打包jar文件 外部调用资源 so等
- 面试精讲之面试考点及大厂真题 - 分布式专栏 13项目中为什么要使用消息队列
- ArcGIS的BLOB字段与Access数据库BLOB字段的交换
- coreldraw做生化标志_做一次体检,会“吃”进多少辐射?
- 初始化参数之memory_target
- iOS与JS交互之UIWebView协议拦截
- 围棋对杀,为何总是只差一气
- Android自定义控件学习
- LoadRunner压力测试实例
- 程序员应该掌握的英语词汇
- C/S架构的优点和缺点
- 新年最美表白烟花-祝大家新年快乐,表白成功
- 聊一聊关于加解密、加签验签的那些事
- Unity3D研究院之Unity中连接本地或局域网MySQL数据库
- 【文献阅读】VAQF: Fully Automatic Software-Hardware Co-Design Framework for Low-Bit Vision Transformer