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提供的方法 创建 ...
随机推荐
- 材质(Material)和几何体(Geometry)
1. 材质 一个材质结合一个几何体可以组成一个mesh对象.材质就像物体的皮肤,决定了几何体的外表.例如:皮肤定义了一个几何体看起来是否像金属.透明与否,或者显示为线框. 基本的材质如下: 1. ...
- 在CAD中插入谷歌地球卫星地图
本文主要介绍如何在CAD中插入谷歌地球卫星地图,作为参照光栅图像.谷歌地球卫星地图使用“迈高图-地图数据下载器”(以下简称:迈高图)下载.迈高图会给出相关插入参数(插入点和缩放比例),保证插入卫星地图 ...
- 全能中间件v19.5.7 正式版发布
v19.5.7 更新=========================1.新增 支持更多微信公众号API.2.优化 AccessToken 刷新机制.3.修复 微信公众号“消息加解密方式”为“安全模式 ...
- MVC路由规则
1 可以创建多条路由规则,每条路由规则的那么属性不同 2路由规则是有顺序的.如果被前面的规则匹配了,那么后面的规则就没机会了 3 constraints 约束: 4namespaces 命名空间 5r ...
- golang微服务框架go-micro 入门笔记2.3 micro工具之消息接收和发布
本章节阐述micro消息订阅和发布相关内容 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架go-mi ...
- linux端口映射
参考文章: http://jingyan.baidu.com/article/ed15cb1b2a332e1be36981ed.html http://www.myhack58.com/Article ...
- dataGridView读写文本
constant con = new constant(); private void loadlistbox2() { dataGridView1.ColumnCount = 1; string z ...
- k8s--complete-demo.yaml
- requirejs:模块加载(require)及定义(define)时的路径理解
给新来的实习生普及下JS基本知识,看到比较好的文章 转载https://blog.csdn.net/xuxiaoping1989/article/details/52384778 接触过require ...
- 归并排序python实现源码
将开发过程经常用到的一些代码片段收藏起来,下面的资料是关于归并排序python实现的代码,应该能对码农们有一些用. def mergesort(arr): if len(arr) == 1: retu ...