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…

数据仓库缓慢变化维介绍

缓慢变化维(Slowly Changing Dimensions, SCD)是数据仓库设计中的一个重要概念,用于处理维度表中随时间缓慢变化的属性。维度表中的数据通常描述业务实体(如客户、产品、员工等),而这些实体的某些属性&…

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

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

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

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

关于图像过曝问题的排查思路

1、问题背景 读者提问,图像在室外遇到过曝的问题,有什么排查思路和改善方法。 2、问题分析 1)先检查一下sensor驱动,对照 sensor datasheet 确认下最小曝光行设置的是否正确, 因为室外高亮场景一般曝光行走的都比较…

【深度学习】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…

PostgreSQL中有没有类似Oracle的dba_objects系统视图

PostgreSQL中有没有类似Oracle的dba_objects系统视图 在PostgreSQL中,没有一个完全集成了所有对象信息的视图(类似于Oracle中的DBA_OBJECTS)。但是,PostgreSQL提供了一些系统目录表和视图,可以用来获取数据库对象的信…

初探沁恒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 正则表达式提供了强大的文本处理能力,能够对字符串进行查找、替换、分割等操作。 一、正则表达式的基本语法 正则表达式由普通字符和特殊字符组成。普通字符包括字母、数字和标点…

通过 echo 命令向 /sys/class/gpio/export 写入一个GPIO编号,但遇到 “Device or resource busy

通过 echo 命令向 /sys/class/gpio/export 写入一个GPIO编号,但遇到 "Device or resource busy" 错误时,这通常意味着该GPIO引脚已经被其他驱动或用户空间程序导出并使用了。 要解决这个问题,可以尝试以下步骤: 检查GP…

SpEL表达式使用方法

1 SpEL简介 SpEL(Spring Expression Language)是一种用于在Spring框架中进行数据绑定和执行业务逻辑的表达式语言。Spring EL提供了一种简洁、灵活和强大的方式来访问对象的属性、调用方法、执行运算和逻辑判断等操作。 官方文档:https://d…

C# 多线程:并发编程的利器

在现今日益复杂的软件开发环境中,多线程编程已经成为提升应用程序性能和响应速度的关键技术。C# 作为一种现代、功能强大的编程语言,提供了丰富的多线程支持,使开发者能够充分利用多核处理器和并行计算的优势。本文将深入探讨C#中的多线程编程…

网络协议三

数据中心 一、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…

关于在 Ubuntu 下安装配置和调优 FTP 服务器

今天我在阿贝云的免费服务器上部署测试FTP服务器,这个阿贝云真是个不错的免费云服务器啊,配置虽然不高,但完全足够搭建一个FTP服务器使用了。1核CPU、1G内存、10G硬盘、5M带宽,对我这个喜欢折腾的家伙来说可太好用了。 首先,让我简单介绍下今天要用到的FTP服务器软…

Mybatis杂记

group by查询返回map类型 1,2 List<Map<String, Object>> getCount();xml: <select id"getCount" resultType"java.util.HashMap">SELECT company_id, ifnull(sum(count_a count_b),0) ctFROM test.com_countWHERE is_del 0 GROUP BY…

天气数据集2-应用RNN做天气预测

二、用循环神经网络做天气(温度)预测 本项目是基于Pytorch的 RNN&GRU模型&#xff0c;用于预测未来温度 数据集: https://mp.weixin.qq.com/s/08BmF4RnnwQ-jX5s_ukDUA 项目代码: https://github.com/disanda/b_code/tree/master/Weather_Prediction RNN 模型本质是用于预…