Django增删改查

本文详细介绍了Django中对数据的增删改查操作。包括使用`objects.all()`进行基本查询,通过`filter()`删除特定数据,利用`.update()`方法更新记录,以及使用`.create()`方法添加新数据。此外,还提及了如何将查询结果传递给模板进行显示。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 查询
  • 删除
  • 修改
  • 增加

查询

一般查询只需要使用方法 模型类.objects.all()就可以查询到所有数据

 这里以Animal为模型类演示

如果需要渲染到页面上的话就需要传入数据 传入数据需要使用字典的 键值对 形式传递 传参演示如下

在这里吧所有数据赋值到一个变量上

第一种

在设定一个变量 来保存有所有数值的变量的键值对 然后传入页面中

 第二种

 直接传递字典

 第三种

使用locals()方法 会直接吧你上面设定的变量传入进入然后以你设定的变量名为键

 如果想在页面中展示你所传入的数据 可以以模板变量形式获取 相当于vue中的插值表达式 {{对应字典的键}}

删除

删除数据只需要这一条数据

filter为查询数据 这里演示的为查询id=1的数据然后删除 如果要删除其它数据 只需要输入相对的查询条件就可以了

 修改

修改操作为先查询到需要修改的数据 然后修改后的数据替换掉要修改的数据

例如 吧name=张三中的张三修改为李四

查询的为一整条数据中的所有 所有你可以查询name=张三一行中的任意一个就可以 

然后修改为.update(name=“修改的数据”) 前面的name要和表中的一样 不然会修改失败报错

如果只要修改name就只写name就可以的 多修改 可以多写其他的

增加

增加为模型类.objects.create(字段=值)

在列表中的id有自增的时候 可以不用主动添加id 只添加其他的

设Animal中有name age gender三个属性

name就只添加这三个属性就可以了

总结

我感觉写的不好 会多写写的

### Django 实现 CRUD 操作教程 #### 配置环境 为了在 Django实现 CRUD 操作,首先需要确保 `settings.py` 文件已正确配置。这包括将必要的应用程序添加到 `INSTALLED_APPS` 列表中: ```python INSTALLED_APPS = [ ... 'ninja_crud', ... ] ``` 此设置允许使用 Django Ninja CRUD 来简化操作[^1]。 #### 定义模型 定义一个简单的模型来表示数据库中的表格。这里以书籍为例: ```python from django.db import models class Book(models.Model): title = models.CharField(max_length=200) author = models.CharField(max_length=100) def __str__(self): return self.title ``` 该代码片段展示了如何通过 Python 类的形式描述数据结构并映射至关系型数据库中的记录[^5]。 #### 创建视图函数 接下来,在 views.py 文件里编写处理 HTTP 请求的方法。对于每一种 CRUD 动作都对应着特定类型的请求方式(GET, POST, PUT/PATCH 和 DELETE),下面给出了一些基本的例子: ##### 获取所有条目 (Read All) ```python from .models import Book from rest_framework.response import Response from rest_framework.decorators import api_view @api_view(['GET']) def get_books(request): books = Book.objects.all() data = [{'id': book.id, 'title': book.title, 'author': book.author} for book in books] return Response(data=data) ``` 这段脚本用于响应 GET 方法获取全部书籍列表的信息。 ##### 添加新条目(Create One) ```python from rest_framework.status import HTTP_201_CREATED @api_view(['POST']) def add_book(request): new_book = Book(title=request.data['title'], author=request.data['author']) new_book.save() # 将新的实例保存入数据库 return Response(status=HTTP_201_CREATED) ``` 上述逻辑实现了接收客户端提交的数据并通过调用 save() 方法将其存入数据库的功能[^4]。 ##### 更新现有条目(Update One) ```python from django.shortcuts import get_object_or_404 @api_view(['PUT', 'PATCH']) def update_book(request, pk=None): target_book = get_object_or_404(Book, id=pk) if request.method == "PUT": target_book.title = request.data.get('title') target_book.author = request.data.get('author') elif request.method == "PATCH": fields_to_update = {} if 'title' in request.data: fields_to_update["title"] = request.data['title'] if 'author' in request.data: fields_to_update["author"] = request.data['author'] Book.objects.filter(id=target_book.id).update(**fields_to_update) return Response({"message": f"Book {pk} has been updated successfully."}) ``` 这部分程序能够依据传来的参数修改指定 ID 的图书信息,并支持完全替换(PUT)或部分更新(PATCH)。 ##### 删除单个条目(Delete One) ```python @api_view(['DELETE']) def delete_book(request, pk=None): try: to_be_deleted = Book.objects.get(pk=pk) to_be_deleted.delete() message = {"message":f"The book with the following primary key was deleted: {pk}"} except Book.DoesNotExist as e: message={"error":"The requested resource does not exist"} finally: return Response(message) ``` 最后这一段负责移除某一条具体的记录,如果找不到对应的对象则返回错误提示。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值