Django学习三:views业务层中通过models对实体对象进行的增、删、改、查操作。

2024-06-06 17:28

本文主要是介绍Django学习三:views业务层中通过models对实体对象进行的增、删、改、查操作。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、Django ORM介绍
  • 二、项目快速搭建
  • 三、操作
    • 1、view.py
      • a、增加操作
      • b、删除操作
      • c、修改操作
      • d、查询操作
    • 2、urls.py

前言

  • 上接博文:Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。。
  • 紧跟上一篇博文,本文主要学习view层的增、删、改、查业务流程
  • 有兴趣可以添加我,一起探讨技术。
    • 加V:Fengfl1222,名称:insist科技。
    • 要资料,申请备注为:CSDN+地方,如CSDN山东。
    • 想接项目一起努力进步,申请备注为:CSDN+地方+项目,如CSDN+山东+项目,添加成功之后,可以发一份简历。
    • 本人介绍:211高校(北京交通大学)计算机研究生,本科双非计算机毕业后,校招进入军工,工作2个月离职后进入阿里,工作两年后离职考研,现已毕业,入职济南某大厂。主要技术栈:java、python、vue、react等web开发需求。已有开发团队,如果有空闲时间想接项目者,可以加我呦。
    • 不按上诉规则添加好友者,不予通过。
  • 项目环境
    • python: 3.11.5
    • django:4.1
      在这里插入图片描述

一、Django ORM介绍

所有面向对象的语言都可以通过原生sql操作数据库。但是Django的ORM框架是特殊的,可以不通过sql,通过面向对象的方式进而操作数据库表,进行增、删、改、查。这种方式好上手,避免了不会sql的同学需要重新学习sql。扩展一下,因为我主要搞java的,所以java的ORM框架有mybatis、JPA等,相比java的ORM框架,Django这种面向对象操作数据库的ORM框架确实简单太多了。

接下来请跟随我的脚步,一起学习Django的ORM框架。

  • O(objects):类和对象。R(Relation):关系,关系数据库中的表格。M(Mapping):映射。

  • Django ORM框架的特点:

    1. 建立模型类和表之间的对应关系,允许我们通过面向对象的方式来操作数据库。
    2. 根据设计的模型类生成数据库中的表格。
    3. 通过方便的配置就可以进行数据库的切换。

二、项目快速搭建

对前面的搭建流程梳理简化。

  1. django-admin startproject test_models_django:创建项目test_models_django
  2. cd test_models_django
  3. python manage.py migrate
  4. python manage.py startapp app01:创建应用app01
  5. 主包中setting.py配置mysql数据源,根据提示安装mysqlclient
    DATABASES = {"default": {"ENGINE": "django.db.backends.mysql","NAME": "数据库名","USER": "用户","PASSWORD": "密码","HOST": "ip","PORT": "3306"}
    }
    
  6. python manage.py runserver:运行项目
  7. http://127.0.0.1:8000/:浏览器测试。出现如下节目,则成功运行
    在这里插入图片描述

三、操作

view.py中填写如下操作
request是模仿从前端传过来的请求,这里可以进行自由替换。

1、view.py

a、增加操作

def addUser(request):username = request.POST.get('username')name = request.POST.get('name')password = request.POST.get('password')sex = request.POST.get('sex')age = request.POST.get('age')phone = request.POST.get('phone')email = request.POST.get('email')unit = request.POST.get('unit')models.UserData.objects.create(username=username, name=name, password=password, sex=sex, age=age, phone=phone,email=email, unit=unit)result = {'code': 0,'msg': 'success','data': ''}return HttpResponse(json.dumps(result, ensure_ascii=False), content_type='application/json')

b、删除操作

def deleteUserById(request):u_id = request.GET.get('u_id')models.UserData.objects.filter(u_id=u_id).delete()result = {'code': 0,'msg': 'success','data': ''}return HttpResponse(json.dumps(result, ensure_ascii=False), content_type='application/json')

c、修改操作

def queryUserById(request):u_id = request.GET.get('u_id')UserData = models.UserData.objects.get(u_id)data_list = {'dataList': UserData}result = {'code': 0,'msg': 'success','data': data_list}return HttpResponse(json.dumps(result, ensure_ascii=False), content_type='application/json')def updateUser(request):u_id = request.POST.get('u_id')username = request.POST.get('username')name = request.POST.get('name')password = request.POST.get('password')sex = request.POST.get('sex')age = request.POST.get('age')phone = request.POST.get('phone')email = request.POST.get('email')unit = request.POST.get('unit')user_obj = models.UserData.objects.get(u_id)user_obj.username = usernameuser_obj.name = nameuser_obj.password = passworduser_obj.sex = sexuser_obj.age = ageuser_obj.phone = phoneuser_obj.email = emailuser_obj.unit = unituser_obj.save()result = {'code': 0,'msg': 'success','data': ''}return HttpResponse(json.dumps(result, ensure_ascii=False), content_type='application/json')

d、查询操作

def queryUsers(request):all_user_list = models.UserData.objects.filter(status__ne=9)all_user_total = models.UserData.objects.filter(status__ne=9).count()#  all_user_total = len(all_user_list)for item in all_user_list:print(item.name)data_list = {'dataList': all_user_list, 'totalRows': all_user_total}result = {'code': 0,'msg': 'success','data': data_list}return HttpResponse(json.dumps(result, ensure_ascii=False), content_type='application/json')def queryUserById(request):u_id = request.GET.get('u_id')UserData = models.UserData.objects.get(u_id)data_list = {'dataList': UserData}result = {'code': 0,'msg': 'success','data': data_list}return HttpResponse(json.dumps(result, ensure_ascii=False), content_type='application/json')

2、urls.py

urlpatterns = [path('hello/', viewsUser.hello_world),# 用户模块path('queryUsers/', viewsUser.queryUsers, name='queryUsers'),path('queryUserById/', viewsUser.queryUserById, name='queryUserById'),path('addUser/', viewsUser.addUser, name='addUser'),path('updateUser/', viewsUser.updateUser, name='updateUser'),path('deleteUserById/', viewsUser.deleteUserById, name='deleteUserById'),
]

这篇关于Django学习三:views业务层中通过models对实体对象进行的增、删、改、查操作。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1036756

相关文章

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

MyBatis-Plus 自动赋值实体字段最佳实践指南

《MyBatis-Plus自动赋值实体字段最佳实践指南》MyBatis-Plus通过@TableField注解与填充策略,实现时间戳、用户信息、逻辑删除等字段的自动填充,减少手动赋值,提升开发效率与... 目录1. MyBATis-Plus 自动赋值概述1.1 适用场景1.2 自动填充的原理1.3 填充策略

Python使用openpyxl读取Excel的操作详解

《Python使用openpyxl读取Excel的操作详解》本文介绍了使用Python的openpyxl库进行Excel文件的创建、读写、数据操作、工作簿与工作表管理,包括创建工作簿、加载工作簿、操作... 目录1 概述1.1 图示1.2 安装第三方库2 工作簿 workbook2.1 创建:Workboo

一文解密Python进行监控进程的黑科技

《一文解密Python进行监控进程的黑科技》在计算机系统管理和应用性能优化中,监控进程的CPU、内存和IO使用率是非常重要的任务,下面我们就来讲讲如何Python写一个简单使用的监控进程的工具吧... 目录准备工作监控CPU使用率监控内存使用率监控IO使用率小工具代码整合在计算机系统管理和应用性能优化中,监

如何使用Lombok进行spring 注入

《如何使用Lombok进行spring注入》本文介绍如何用Lombok简化Spring注入,推荐优先使用setter注入,通过注解自动生成getter/setter及构造器,减少冗余代码,提升开发效... Lombok为了开发环境简化代码,好处不用多说。spring 注入方式为2种,构造器注入和setter

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配