Django rest_fram_work API View序列化
APIview
单表的GET和POST:
视图
查询所有:
class PublishView(APIView):
# 查询数据
def get(self, request):
# first inquire database
publish = models.Publisher.objects.all()
# data put serializers data packging
bs = PublishModelSerializers(publish, many=True) # many=True多个对象
# return
return Response(bs.data) # 增加数据
def post(self, request):
bs = PublishModelSerializers(data=request.data,many=True) # post不需要定义many=Ture if bs.is_valid():
bs.save() # 保存
return Response("添加成功")
else:
return Response("增加失败")
查询单条:
class PublishDetaiView(APIView):
# 将这个pk设置成和lookup_url_kwarg='pk' 一样的值,不然加后缀会取不到值
def get(self, request, id): # id 不要放到request前面
# 查询数据库
publish = models.Publisher.objects.filter(pk=id)
# 封装打包序列化数据
bs = PublishModelSerializers(publish,many=True) # many=True多个对象
print(bs, 6666666666666666666666666)
# Response 会直接返回josn数据格式
ret = Response(bs.data) return ret # # 修改数据(前端指定id值后,在data中输入k:v即可change数据)
def put(self, request, id):
# inquire database
publish = models.Publisher.objects.filter(pk=id).first()
# data= form request.data client
ps = PublishModelSerializers(publish, data=request.data)
# if ps pass verify
if ps.is_valid():
ps.save()
return Response(ps.data)
else:
return Response(ps.errors) # 删除数据(功能还未实现)
def delete(self, request, id):
print(type(id),5555555555555)
models.Publisher.objects.filter(id=id).delete()
return Response("删除成功")
外键的GET和POST:
视图
查询所有:
# 多条数据
class BookView(APIView):
def get(self, request, *args, **kwargs):
book_list = models.Book.objects.all()
# context十分关键,如果不将request传递给它,在序列化的时候,图片与文件这些Field不会再前面加上域名,也就是说,只会有/media/img...这样的路径!
bs = BookModelSerializers(instance=book_list, many=True, context={'request': request}) # 在做链接的时候需要添加context参数
print(bs)
# 默认就返回json格式的字符串
return Response(bs.data) # 增加数据
def post(self, request):
bs = BookModelSerializers(data=request.data) # post不需要定义many=Ture
if bs.is_valid():
bs.save() # 保存
return Response("添加成功")
else:
return Response("增加失败")
查询单条:
# 单条数据
class BookDetaiView(APIView):
# inquire database
def get(self, request, id, *args, **kwargs):
book_list = models.Book.objects.filter(id=id)
bs = BookModelSerializers(instance=book_list, many=True, context={'request': request}) # 在做链接的时候需要添加context参数
# 默认就返回json格式的字符串
return Response(bs.data) def put(self, request, id, *args, **kwargs):
book = models.Book.objects.filter(pk=id).first()
bs = BookModelSerializers(book, data=request.data) # 单条数据不能使用 many = Ture
if bs.is_valid():
bs.save()
return Response("添加成功")
# return Response(bs.data) # 一般用这个
else:
return Response("添加失败")
# return Response(bs.errors) # 一般用这个 def delete(self, request, id):
models.Book.objects.filter(pk=id).delete()
return Response("删除成功")
Django rest_fram_work API View序列化的更多相关文章
- Django Rest framework 之 序列化
RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...
- 初识Django —Python API接口编程入门
初识Django —Python API接口编程入门 一.WEB架构的简单介绍 Django是什么? Django是一个开放源代码的Web应用框架,由Python写成.我们的目标是用Python语言, ...
- Django 类方式view进行进行用户验证
问题: Django中,view的书写方式有两种,一种是def函数方式,一种是class方式,函数方式通过@login_required装饰器标记函数,就必须通过用户验证,而类,则没办法通过此方法进行 ...
- Django 基础二(View和urls)
上一篇博文已经成功安装了python环境和Django,并且新建了一个空的项目.接下来就可以正式开始进行Django下 的Web开发了.首先进入项目的主目录: cd ./DjangoLearn/hol ...
- Django中的View视图讲解
Django中的View视图(view.py)是负责处理用户请求和返回响应的逻辑. 视图函数或视图简而言之就是一个python函数,它接受一个web请求并返回一个Web响应. 此响应可以是网页的HTM ...
- Django之信号和序列化
前言 Django的信号要从一张抽象图和一个需求说起: 赛道:Django 赛车:http请求 基础设施:Django设置的信号 一.Django内置信号类型 1.既然赛道上有各种基础设置,那么Dja ...
- python3开发进阶-Django视图(View)的常见用法
阅读目录 简述Django的View(视图) CBV和FBV Request对象和Response对象 Django组件(render,redirect)详解 一.简述Django的View(视图) ...
- Django框架 之 view视图
Django框架 之 view视图 浏览目录 概述 简单的视图 HttpRequest对象 CBV和FBV 给视图加装饰器 Request对象 Response对象 JsonResponse对象 Dj ...
- 关于Django中,实现序列化的几种不同方法
前言 关于序列化操作,就是将一个可迭代的数据结构,通过便利的方式进行我们所需要的操作. 今天历来归纳一下,Django中的几种不同得分方法,已经Django-restframework提供的方法 创建 ...
随机推荐
- Anaconda的pip加速下载命令
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
- 在 Target 中获取项目引用的所有依赖(dll/NuGet/Project)的路径
原文:在 Target 中获取项目引用的所有依赖(dll/NuGet/Project)的路径 在项目编译成 dll 之前,如何分析项目的所有依赖呢?可以在在项目的 Target 中去收集项目的依赖. ...
- WPF 判断一个对象是否是设计时的窗口类型,而不是运行时的窗口
原文:WPF 判断一个对象是否是设计时的窗口类型,而不是运行时的窗口 当我们对 Window 类型写一个附加属性的时候,在属性变更通知中我们需要判断依赖对象是否是一个窗口.但是,如果直接判断是否是 W ...
- 2019 东方明珠java面试笔试题 (含面试题解析)
本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.东方明珠等公司offer,岗位是Java后端开发,最终选择去了东方明珠. 面试了很多家公司,感觉大部分公司考察的点 ...
- Java自学-数组 创建数组
Java 如何创建一个数组 数组是一个固定长度的,包含了相同类型数据的 容器 步骤 1 : 声明数组 int[] a; 声明了一个数组变量. []表示该变量是一个数组 int 表示数组里的每一个元素都 ...
- Java visualvm
简介 VisualVM是一个集成多个JDK命令行工具的可视化工具.可以作为Java应用程序性能分析和运行监控的工具.开发人员可以利用它来监控.分 析线程信息,浏览内存堆数据.系统管理员可以利用它来监测 ...
- MySQL数据库基本规范整理
此篇文章是学习MySQL技术整理的,不足之处还望指教,不胜感激. 数据库基本规范涉及数据库命名规范.数据库索引设计规范.数据库基本设计规范.数据库字段设计规范.数据库SQL开发规范.数据库操作行为规范 ...
- 十大Intellij IDEA快捷键(附IDEA快捷键详细列表及使用技巧)
十大Intellij IDEA快捷键(附IDEA快捷键详细列表及使用技巧) Intellij IDEA中有很多快捷键让人爱不释手,stackoverflow上也有一些有趣的讨论.每个人都有自己的最爱, ...
- insmod/rmmod
insmod -f 不检查目前kernel版本与模块编译时的kernel版本是否一致,强制将模块载入 -k 将模块设置为自动卸除 -m 输出模块的载入信息 -o <模块名称> 指定模块的名 ...
- Java JAR包
JAR文件全称 Java Archive File,意为Java档案文件.JAR文件是一种压缩文件,也被成为JAR包. 运行程序时,JVM会自动在内存中解压要用的JAR包. 使用JAR包的优点:1.安 ...