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

文章目录

前言

  • 上接博文: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

    python 复制代码
    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、增加操作

python 复制代码
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、删除操作

python 复制代码
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、修改操作

python 复制代码
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 = username
    user_obj.name = name
    user_obj.password = password
    user_obj.sex = sex
    user_obj.age = age
    user_obj.phone = phone
    user_obj.email = email
    user_obj.unit = unit
    user_obj.save()

    result = {
        'code': 0,
        'msg': 'success',
        'data': ''
    }
    return HttpResponse(json.dumps(result, ensure_ascii=False), content_type='application/json')

d、查询操作

python 复制代码
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

python 复制代码
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'),
]
相关推荐
武子康9 分钟前
大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和
大数据·人工智能·学习·算法·机器学习·数据挖掘
使者大牙19 分钟前
【大语言模型学习笔记】第一篇:LLM大规模语言模型介绍
笔记·学习·语言模型
桀桀桀桀桀桀29 分钟前
数据库中的用户管理和权限管理
数据库·mysql
As977_41 分钟前
前端学习Day12 CSS盒子的定位(相对定位篇“附练习”)
前端·css·学习
ajsbxi44 分钟前
苍穹外卖学习记录
java·笔记·后端·学习·nginx·spring·servlet
Rattenking1 小时前
React 源码学习01 ---- React.Children.map 的实现与应用
javascript·学习·react.js
dsywws1 小时前
Linux学习笔记之时间日期和查找和解压缩指令
linux·笔记·学习
道法自然04021 小时前
Ethernet 系列(8)-- 基础学习::ARP
网络·学习·智能路由器
爱吃生蚝的于勒1 小时前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
superman超哥2 小时前
04 深入 Oracle 并发世界:MVCC、锁、闩锁、事务隔离与并发性能优化的探索
数据库·oracle·性能优化·dba