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调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

Python利用PIL进行图片压缩

《Python利用PIL进行图片压缩》有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所以本文为大家介绍了Python中图片压缩的方法,需要的可以参考下... 有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所有可以对文件中的图

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE