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'),
]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/23624.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一周发文9篇!MIMIC-IV数据库周报(5.22~5.28)

重症医学数据库(MIMIC)是由计算生理学实验室开发的公开数据集,其中包括与数千个重症监护病房入院相关的去识别化健康数据,致力于推动临床信息学、流行病学和机器学习的研究。 MIMIC数据库于2003年在美国国立卫生研究院的资助下&am…

2024上海初中生古诗文大会倒计时4个半月:单选题真题示例和独家解析

现在距离2024年初中生古诗文大会还有4个半月时间,我们来看10道选择题真题和详细解析,了解古诗文大会的考察方式和知识点,从而更好地备考。 以下题目截取自我独家制作的在线真题集,都是来自于历届真题,去重、合并后&am…

面试成功的不二法门:详解Vue3答题章法

前言 面试题在网络上有如海洋之深,对于同一知识点,每个人的理解也各有千秋。我们在面试中常常会遇到一个瞬息间脑海里一片空白的情况,其实这并不是因为我们不懂,而是因为我们在回答的时候缺乏一个清晰的思路。那么问题来了&#x…

《魔法与科技的融合:SpringBoot运维的现代传说》

揭开了SpringBoot应用部署的神秘面纱。从云平台的选型到Docker的容器化魔法,再到Kubernetes的集群力量,每一步都充满了奇幻色彩。文章以轻松幽默的笔触,带领读者穿梭于现代应用部署的各个角落,探索自动化部署的奥秘,学…

【深度学习】PuLID: Pure and Lightning ID Customization via Contrastive Alignment

论文:https://arxiv.org/abs/2404.16022 代码:https://github.com/ToTheBeginning/PuLID 文章目录 AbstractIntroductionRelated WorkMethods Abstract 我们提出了一种新颖的、无需调整的文本生成图像ID定制方法——Pure and Lightning ID customizatio…

微信好友朋友圈的三天、半年可见怎么破?方法拿走不谢

『Code掘金』问大家,有没有这种经历,当你想去翻某人的朋友圈时,对方设置成了3天可见,之前的内容没法看到了。 不过没关系!今天『Code掘金』给大家分享一款导出朋友圈的工具,让大家留住痕迹。 WechatMomen…

初探沁恒CH32V307VCT6评估板 1-1外部中断EXTI

旋转编码器计次 1,创建 .C .H 文件 Count_Sonser.c Count_Sonser.h 2,包含头文件 #include "ch32v30x.h" //#include "debug.h" #include "Count_Sonser.h" 注意:如果不包含第一第二个头文件uint、int这…

如何掌握 Java 正则表达式 的基本语法及在 Java 中的应用

正则表达式是一种用于匹配字符串的模式,在许多编程语言中广泛使用。Java 正则表达式提供了强大的文本处理能力,能够对字符串进行查找、替换、分割等操作。 一、正则表达式的基本语法 正则表达式由普通字符和特殊字符组成。普通字符包括字母、数字和标点…

网络协议三

数据中心 一、DNS 现在网站的数目非常多,常用的网站就有二三十个,如果全部用 IP 地址进行访问,恐怕很难记住 根 DNS 服务器 :返回顶级域 DNS 服务器的 IP 地址 顶级域 DNS 服务器:返回权威 DNS 服务器的 IP 地址 …

汇凯金业:贵金属交易规则有哪些

贵金属投资目前非常火热,许多投资者从中获得了可观的收益。新手投资者在进入贵金属市场及其交易之前,务必要了解清楚贵金属的交易规则。了解规则和差异能帮助新手更好地进行贵金属投资交易。下面我们以现货类贵金属为例,详细说明贵金属的交易…

一周学会Django5 Python Web开发 - Django5内置Auth认证系统-用户修改密码实现

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计59条视频,包括:2024版 Django5 Python we…

基于springboot的-仓库 管理系统【附:资料➕文档】

前言:我是源码分享交流Coding,专注JavaVue领域,专业提供程序设计开发、源码分享、 技术指导讲解、各类项目免费分享,定制和毕业设计服务! 免费获取方式--->>文章末尾处! 项目介绍: 管理员…

数字IC后端物理验证PV | TSMC 12nm Calibre Base Layer DRC案例解析

基于TSMC 12nm ARM A55 upf flow后端设计实现训练营将于6月中旬正式开班!小班教学!目前还有3个名额,招满为止!有需要可以私信小编 ic-backend2018报名。吾爱IC社区所有训练营课程均为直播课! 这个课程支持升级成双核A…

服务器禁止密码登陆

转载请标明出处:https://blog.csdn.net/donkor_/article/details/139444224 文章目录 一、前言二、编辑sshd_config文件三、重启服务四、总结 一、前言 复杂的密码,登陆服务器的时候,也是很不方便的。并且频繁登陆,暴露给外界&am…

c++ 里函数选择的优先级:普通函数、模板函数、万能引用,编译器选择哪个执行呢?

看大师写的代码时,除了在类里定义了 copy 构造函数,移动构造函数,还定义了对形参采取万能引用的构造函数,因此有个疑问,这时候的构造函数优先级是什么样的呢?简化逻辑测试一下,如下图&#xff0…

【Vue】路由的封装抽离

问题:所有的路由配置都在main.js中合适吗? 目标:将路由模块抽离出来。 好处:拆分模块,利于维护 路径简写: 脚手架环境下 指代src目录,可以用于快速引入组件 完整代码 router/index.js // 但…

探索贷款交易平台的技术架构与创新应用

随着金融科技的快速发展,贷款交易平台作为金融行业的重要组成部分,正扮演着越来越重要的角色。本文将深入探讨贷款交易平台的技术架构和创新应用,从前端设计、后端系统、安全保障和智能化服务等方面进行全面解析,帮助读者更好地了…

【Python报错】已解决AttributeError: list object has no attribute ’shape‘ ( Solved )

解决Python报错:AttributeError: ‘list’ object has no attribute ‘shape’ (Solved) 在Python中,AttributeError表明你试图访问的对象没有你请求的属性或方法。如果你遇到了AttributeError: list object has no attribute shape的错误,这…

为什么要用Git

1. Git是什么 1.1. 概述 Git是分布式版本控制系统,与SVN类似的集中化版本控制系统相比,集中化版本控制系统如果中央服务器宕机则会影响数据和协同开发。 Git是分布式的版本控制系统,客户端不只是提取最新版本的快照,而且将整个…

【Java毕业设计】基于Java的特色美食推荐网站的设计与实现

文章目录 摘 要ABSTRACT目 录1 概述1.1 研究背景及意义1.2 国内外研究现状1.3 拟研究内容1.4 系统开发技术1.4.1 Java编程语言1.4.2 SpringBoot框架1.4.3 MySQL数据库1.4.4 B/S结构1.4.5 MVC模式 2 系统需求分析2.1 可行性分析2.2 任务概述2.3 功能性需求3.2.2 数据库逻辑结构设…