django restful API
文章目录
- 项目地址
- 一、django环境安装以及初识restful
- 1.1 安装python 3.10的虚拟环境
- 1.2 创建django工程文件
- 1.3 创建一个book app
- 1.4 序列化(Django JsonResponse)
- 1.4.1创建一个Models
- 1.4.2 创建django的超级用户admin
- 1.4.3 添加serializers.py生成序列化器
- 1.5 FBV创建视图
- 1.5.1 在app里创建django 视图
- 1.5.2创建app的urls路由
- 1.5.3 将app的路由注册到项目的路由
- 1.5.4 整体流程梳理
- 1.5.5 创建一个可以通过传递id来get/post
- 1.5.6 使用restful风格改写views
- 1.6 CBV
- 1.6.1 使用restful的APIView类来创建
- 二、Django restful组件研究
- 2.1 APIView的主要作用
- 2.1 序列化器serializer
- 2.1.1 创建一个Book模型类
- 2.1.2 设计book类的序列化器
- 2.1.3 设计view,get/post请求
- 2.1.4 将视图view添加到project路由里
- 2.1.5 项目结构
- 2.1.6 对单个对象进行操作
- 2.2 使用ModelSerializer
- 2.3 GenericAPIView 实现增删改查
- 2.4.1 创建多个Models
项目地址
第一章:
- 教程作者:Codingstrade
- 教程地址:
https://www.CSDN.com/watch?v=z6WudaByH1k&t=120s
- 代码仓库地址:
- 所用到的框架和插件:
django
djangorestfui
- 插件
django
thunder client
sqlite view
第二章:
课程i地址:
https://www.bilibili.com/video/BV1z5411D7BQ?spm_id_from=333.788.videopod.episodes&vd_source=791e6deaa9c8a56b1f845a0bc1431b71&p=17
一、django环境安装以及初识restful
1.1 安装python 3.10的虚拟环境
- pipenv 安装指定版本的python
pipenv --python 3.10
- 另外一种方法
python3.10 -m venv venv
- 运行虚拟环境
pipenv shell
- 另一种方法
.\venv\Scripts\activate

- 安装django
pipenv install django
- 安装所有的包
requirements.txt
django>=4.0.0,<4.1.0
djangorestframework
pyyaml
requests
django-cors-headers
- 安装
pip install -r requirements.txt
1.2 创建django工程文件
- 创建项目
myapi是项目的名称
django-admin startproject myapi
-
查看文件

-
运行django,默认l
ocalhost:8000
py manage.py runserver

1.3 创建一个book app
- 控制台输入
py manage.py startapp book
-
成功后,文件夹目录

-
注册APP到django里

1.4 序列化(Django JsonResponse)
将数据库内容 转为python的格式
1.4.1创建一个Models
- 在
api/models.py里创建
from django.db import models# Create your models here.
class Post(models.Model):title = models.CharField(max_length=120)author = models.CharField(max_length=120)email = models.EmailField( default='')
- 注册Models
python manage.py makemigrations
- 创建models表
python manage.py miggrate
res_api/admin.py注册我们的Models
admin.site.register(Post)
1.4.2 创建django的超级用户admin
- 创建超级用户
python manage.py createsuperuser
- 创建完成之后登录到
http://127.0.0.1:8000/admin/

- 成功之后在post里添加一个用户,用于我们将来的测试
1.4.3 添加serializers.py生成序列化器
- 在
serializers.py文件里添加
from rest_framework import serializers
from .models import Post class PostSerializer(serializers.ModelSerializer):class Meta:model = Postfields = ['title', 'author', 'email']
1.5 FBV创建视图
- 该模式下,不管是django原生,还是restful风格,都是函数式编程
1.5.1 在app里创建django 视图
- 创建
res_api/views.py
from django.shortcuts import render
from .models import Post
from .serializers import PostSerializer
from django.http import JsonResponse
from rest_framework.parsers import JSONParser
from django.views.decorators.csrf import csrf_exempt #测试postman使用# Create your views here.
@csrf_exempt
def PostsView(request):if request.method == 'GET':posts = Post.objects.all()serializer = PostSerializer(posts, many=True)return JsonResponse(serializer.data, safe=False)elif request.method == 'POST':post_data = JSONParser().parse(request)serializer = PostSerializer(data=post_data)if serializer.is_valid():serializer.save()return JsonResponse(serializer.data, status=201)return JsonResponse(serializer.errors, status=400)
1.5.2创建app的urls路由
1.创建res_api/urls.py:注意,这里的只是app的路由 ,并不是项目的路由,
from django.urls import path
from .views import PostsViewurlpatterns = [path('posts/', PostsView),
]
1.5.3 将app的路由注册到项目的路由
1.drf/urls.py里添加
from django.contrib import admin
from django.urls import path,includeurlpatterns = [path('admin/', admin.site.urls),path('', include('res_api.urls')),
]
1.5.4 整体流程梳理
- 在app里创建models,这个models一般对应的数据库里的数据
res_api/models.py,使得python可以从数据库里取数 - 创建完之后,将models在app的admin下面注册
res_api/admin.py,让django知道这个models模型 - 序列化Models,
res_api/serializers.py,这里一般就是对表中的字段进行序列化 - 序列化完整之后需要构建view,
res_api/views.py,这里的功能是告诉django如何取到models序列化好的数据,怎么取,以什么方式来取 - 注册app自己的路由
res_api/views.py,告诉django 该app的models通过什么字段能访问 - 将app的路由注册到project里,这样浏览器就可以通过项目的地址+app里定义的字段访问到我们的models数据
- 至此,有个bug就是post的提交方式是和get一样,我们需要将他改为posts的方式
1.5.5 创建一个可以通过传递id来get/post
rest_aip/views.py添加一个新的函数,用来处理传递的id
@csrf_exempt
def postuser_by_id(request, pk):try:post = PostUsers.objects.get(pk=pk)except PostUsers.DoesNotExist:return HttpResponse(status=404)if request.method == 'GET':serializer = PostSerializer(post)return JsonResponse(serializer.data)elif request.method == 'PUT':post_data = JSONParser().parse(request)serializer = PostSerializer(post, data=post_data)if serializer.is_valid():serializer.save()return JsonResponse(serializer.data)return JsonResponse(serializer.errors, status=400)elif request.method == 'DELETE':post.delete()return HttpResponse(status=204)
- 将我们的函数,注册到我们的app的urls里,
res_api/urls.py
urlpatterns = [path('postusers/', PostUsersView), path('detials/<int:pk>', postuser_by_id), # using <int:pk> to get the id of the post
]
- 测试,成功
1.5.6 使用restful风格改写views
- 修改
res_api/views.py
from django.shortcuts import render
from .models import PostUsers
from .serializers import PostSerializer
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status@api_view(['GET', 'POST'])
def PostUsersView(request):if request.method == 'GET':posts = PostUsers.objects.all() #quertSetserializer = PostSerializer(posts, many=True)return Response(serializer.data)elif request.method == 'POST':serializer = PostSerializer(data=request.data)if serializer.is_valid():serializer.save()return Response(serializer.data, status=status.HTTP_201_CREATED)return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)@api_view(['GET', 'PUT', 'DELETE'])
def postuser_by_id(request,相关文章:
django restful API
文章目录 项目地址一、django环境安装以及初识restful1.1 安装python 3.10的虚拟环境1.2 创建django工程文件1.3 创建一个book app1.4 序列化(Django JsonResponse)1.4.1创建一个Models1.4.2 创建django的超级用户admin1.4.3 添加serializers.py生成序列化器1.5 FBV创建视图1…...
在xml 中 不等式 做转义处理的问题
对于这种要做转义处理,<![CDATA[ < ]]>...
python——文件存储与写入path
path方法常常用来访问一个文件所在的地址,然后将地址储存在变量中。然后有不同的方法将文件内容进行处理,还可以将文件进行创建。 from pathlib import Path pathPath(xxxxxxx) 1.文件读取操作 (1)txt文件 常用read_text()读取文件内容, …...
AI 提示词(Prompt)入门 :ChatGPT 4.0 高级功能指南
这段时间 GPT4 多了很多功能,今天主要是增加了 GPTs Store 的介绍和 创建 GPTs 的简单方法,那么我们开始吧,文末有彩蛋。 这里主要讲解如下几个点: 1: ChatGPT 4.0 插件的使用 2:ChatGPT 4.0 高级数据分…...
C++:模板
目录 一.泛型编程 二.模板 函数模板 类模板 一.泛型编程 在C中,支持函数重载,如果我们通过函数重载实现通用的交换函数,写法如下: void Swap(int& left, int& right) {int temp left;left right;ri…...
假如浙江与福建合并为“浙福省”
在中国,很多省份之间的关系颇有“渊源”,例如河南与河北、湖南与湖北、广东与广西等等,他们因一山或一湖之隔,地域相近、文化相通。 但有这么两个省份,省名没有共通之处,文化上也有诸多不同,但…...
AI图片生成3D物体和2D视频提取3D动画
包括AI图片生成3D物体的网站: 第一个为Artefacts.AIhttps://app.artefacts.ai/starter 第二个为 https://3d.csm.ai/ 以下4个的视频教程连接https://www.youtube.com/watch?vmQQCyzTA_F8 第三个为Tripo AI: Tripo AI for Web 第四个为Meshy AI: Meshy - Free …...
Android 应用包名的定义 pm list packages查询的包名
问题 在AndroidManifest和build.gradle其实都有应用包名的定义,有时候发现两者不一样,那么最终编译到软件生效的是哪个呢? 现象 连接设备后,通过adb shell pm list packages 查询应用包名,所列的名称是在build.grad…...
递归相关练习
21. 合并两个有序链表 - 力扣(LeetCode) 重复子问题:将l1的头节点跟l2的头结点比较 得到一个较小的头节点l1 随后继续比较 将l1后面一个节点跟l2第一个节点比较 又得到一个较小的节点 不断下去 递归出口:当l1或者l2为空时候 返回…...
租房市场新动力:基于Spring Boot的管理系统
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...
基于Python的B站视频数据分析与可视化
基于Python的B站视频数据分析与可视化 爬取视频、UP主信息、视频评论 功能列表 关键词搜索指定帖子ID爬取指定UP主的主页爬取支持评论爬取生成评论词云图支持数据存在数据库支持可视化 部分效果演示 爬取的UP主信息 关键词搜索爬取 指定UP主的主页爬取 指定为黑马的了 爬取视…...
远程:HTTP基本身份验证失败。提供的密码或令牌不正确,或者您的账户启用了两步验证,您必须使用个人访问令牌而不是密码。
问题描述: remote: HTTP Basic: Access denied. The provided password or token is incorrect or your account has 2FA enabled and you must use a personal access token insteadof a password. See http://gitlab.cnovit.com/help/topics/git/troubleshooting…...
聚合值和非聚合值比较【SQL】
文章目录 聚合值和非聚合值比较背景可以在HAVING中使用的聚合条件如何实现与非聚合值的比较与非聚合值的特殊比较 聚合值和非聚合值比较 背景 在数据库中,聚合值和非聚合值通常不直接比较,因为它们的上下文和用途不同。聚合值是通过聚合函数计算出来的…...
Python 学习 DAY1
现在我算是发现了,计算机这里就是得一直不停的学,卷完c卷java,卷完java卷python,卷完python卷机器学习、深度学习。《荀子劝学篇》:“君子曰:学不可以已。” 之前一直学python学得比较碎片化,现…...
`Pendulum`: 掌握时间的艺术,让Python日期时间操作不再复杂
文章目录 Pendulum: 掌握时间的艺术,让Python日期时间操作不再复杂第一部分:背景介绍第二部分:Pendulum是什么?第三部分:如何安装Pendulum?第四部分:简单的库函数使用方法now()today()tomorrow(…...
nginx------HTTP模块配置详解
Nginx 的 server 配置块是 Nginx 配置文件中的一个关键部分,用于定义虚拟主机。每个 server 块可以包含多个 location 块和其他指令,以处理特定的请求。下面是对 server 配置块的详细解释: 一 server 配置块的基本结构 http {# 其他全局配置…...
听见文本的魅力:AI 与未来的语音交互
AI 与未来的语音交互 引言什么是文本转语音(TTS)?当前 TTS 技术现状国内海外文本转语音能力调研文本转语音能力说明多情感风格SSML语音合成标记语言 未来趋势 引言 随着人工智能(AI)技术的迅猛发展,文本转…...
Qt 窗口可见性 之 close函数和hide函数
close函数 基本功能 close() 方法的主要功能是关闭窗口,并触发一系列与关闭相关的事件和信号。调用此方法后,窗口将不再可见,但窗口对象本身仍然存在,并且可以被再次显示(通过调用 show() 方法)。 事件处…...
git bisect和git blame
1.用 git bisect 找到出错的commit 设置开始,最新的一个已知的错误的commit和第一个已知的正确的commit,通过二分法,找出第一个出错的commit。 二分查找法(binary search method)或二分法(bisection meth…...
【面试题】Node.JS篇
1. 什么是Node.js?它的主要特点是什么?适用于哪些场景? Node.js 是一个基于Chrome V8引擎的JavaScript运行时环境,它允许JavaScript代码在服务器端运行。Node.js的主要特点是事件驱动、非阻塞I/O模型,这使得它非常适合处理高并发请求和实时应用。它适…...
基于智能体(Agent)的自动化图像工作流:Wan2.2-I2V-A14B与任务编排
基于智能体(Agent)的自动化图像工作流:Wan2.2-I2V-A14B与任务编排 1. 引言:当图像生成遇上智能体 想象一下这样的场景:你需要为电商平台制作一组节日主题的广告图,包含特定风格的背景、商品展示和人物互动…...
Realistic Vision V5.1 创意工作流:利用GitHub管理提示词库与生成作品版本
Realistic Vision V5.1 创意工作流:利用GitHub管理提示词库与生成作品版本 你有没有遇到过这种情况?团队里每个人都在用Realistic Vision V5.1生成图片,但大家用的提示词五花八门,好的描述词散落在各个聊天记录里,生成…...
QQ音乐加密音频终极解密指南:qmcdump完整教程与实战应用
QQ音乐加密音频终极解密指南:qmcdump完整教程与实战应用 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你是…...
鸿蒙Next通讯录实战:用ArkUI 3.0手把手教你打造新建联系人页面(附完整代码)
鸿蒙Next通讯录实战:用ArkUI 3.0构建企业级新建联系人页面 在移动应用开发领域,通讯录功能一直是检验开发者UI构建和数据管理能力的经典场景。鸿蒙Next作为新一代分布式操作系统,其ArkUI 3.0框架为开发者提供了声明式UI编程范式,让…...
AI辅助开发深度探索:在快马平台上对比评测类qoderwork官网的AI代码生成能力
最近在研究AI辅助开发时,发现一个很有意思的现象:同样是生成一个网页项目,不同AI模型给出的代码风格和实现思路差异很大。这让我萌生了一个想法——能不能搭建一个平台,专门用来对比评测不同AI模型的代码生成能力?就像…...
cv_unet_image-colorization模型压缩与量化:面向移动端的部署优化
cv_unet_image-colorization模型压缩与量化:面向移动端的部署优化 想把那个能把黑白照片变彩色的AI模型塞进手机里?这听起来挺酷,但实际操作起来,你会发现它又大又慢,手机根本跑不动。这就像你想把一台高性能游戏电脑…...
如何通过自动化工具高效获取阴阳师游戏资源?完整实践指南
如何通过自动化工具高效获取阴阳师游戏资源?完整实践指南 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript 阴阳师自动化工具是一款功能强大的智能辅助应用,…...
避坑指南:ESTUN Editor安装后,TP虚拟示教器bricks.ini配置文件到底在哪?
ESTUN Editor安装后TP虚拟示教器配置文件定位全解析 当你在工业机器人编程中同时安装了ESTUN Editor集成环境和独立TP软件包时,最让人头疼的问题莫过于找不到正确的bricks.ini配置文件。这个问题看似简单,却直接影响着虚拟示教器与机器人控制器的连接稳定…...
PyTorch 2.8镜像部署教程:从零配置到运行Llama3-70B 4bit量化推理完整指南
PyTorch 2.8镜像部署教程:从零配置到运行Llama3-70B 4bit量化推理完整指南 1. 环境准备与快速部署 在开始之前,请确保您的硬件配置满足以下最低要求: 显卡:NVIDIA RTX 4090D 24GB显存内存:120GB以上存储:…...
Windows下OpenClaw实战:30分钟接入Qwen3.5-4B-Claude模型
Windows下OpenClaw实战:30分钟接入Qwen3.5-4B-Claude模型 1. 为什么选择WindowsOpenClaw组合 去年我在尝试自动化办公流程时,发现很多AI工具对Windows支持并不友好。直到遇到OpenClaw,这个开源的智能体框架让我眼前一亮——它不仅能像人类一…...
