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序列化的更多相关文章

  1. Django Rest framework 之 序列化

    RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...

  2. 初识Django —Python API接口编程入门

    初识Django —Python API接口编程入门 一.WEB架构的简单介绍 Django是什么? Django是一个开放源代码的Web应用框架,由Python写成.我们的目标是用Python语言, ...

  3. Django 类方式view进行进行用户验证

    问题: Django中,view的书写方式有两种,一种是def函数方式,一种是class方式,函数方式通过@login_required装饰器标记函数,就必须通过用户验证,而类,则没办法通过此方法进行 ...

  4. Django 基础二(View和urls)

    上一篇博文已经成功安装了python环境和Django,并且新建了一个空的项目.接下来就可以正式开始进行Django下 的Web开发了.首先进入项目的主目录: cd ./DjangoLearn/hol ...

  5. Django中的View视图讲解

    Django中的View视图(view.py)是负责处理用户请求和返回响应的逻辑. 视图函数或视图简而言之就是一个python函数,它接受一个web请求并返回一个Web响应. 此响应可以是网页的HTM ...

  6. Django之信号和序列化

    前言 Django的信号要从一张抽象图和一个需求说起: 赛道:Django 赛车:http请求 基础设施:Django设置的信号 一.Django内置信号类型 1.既然赛道上有各种基础设置,那么Dja ...

  7. python3开发进阶-Django视图(View)的常见用法

    阅读目录 简述Django的View(视图) CBV和FBV Request对象和Response对象 Django组件(render,redirect)详解 一.简述Django的View(视图) ...

  8. Django框架 之 view视图

    Django框架 之 view视图 浏览目录 概述 简单的视图 HttpRequest对象 CBV和FBV 给视图加装饰器 Request对象 Response对象 JsonResponse对象 Dj ...

  9. 关于Django中,实现序列化的几种不同方法

    前言 关于序列化操作,就是将一个可迭代的数据结构,通过便利的方式进行我们所需要的操作. 今天历来归纳一下,Django中的几种不同得分方法,已经Django-restframework提供的方法 创建 ...

随机推荐

  1. Python使用Django创建第一个项目

    一 必要环境安装 1首先确保安装了Python3,在此使用的系统为Ubuntu @ubuntu:~$ python3 Python 3.6.7 (default, Oct 22 2018, 11:32 ...

  2. Python列表添加元素

    Python列表添加元素 1.appent() 在列表尾部添加一个元素 >>>my_list.append("append方法") >>>my_ ...

  3. MySql5.7 json查询

    create table t1(name json); insert into t1 values(’ { “hello”: “song”, “num”: 111, “obj”: { “who”: “ ...

  4. C#类型成员:构造函数

    一.构造函数 构造函数是类的特殊方法,它永远不会返回值(即使是void),并且方法名和类名相同,同样支持重载.在使用new关键字创建对象时构造函数被间接调用,为对象初始化字段和属性的值. 无参构造函数 ...

  5. 如何在一个Docker中同时运行多个程序进程?

    我们都知道Docker容器的哲学是一个Docker容器只运行一个进程,但是有时候我们就是需要在一个Docker容器中运行多个进程 那么基本思路是在Dockerfile 的CMD 或者 ENTRYPOI ...

  6. c# js 时间

    DateTime GetTime(double timeStamp) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new Dat ...

  7. 换个语言学一下 Golang (6)——数组,切片和字典

    在上面的章节里面,我们讲过Go内置的基本数据类型.现在我们来看一下Go内置的高级数据类型,数组,切片和字典. 数组(Array) 数组是一个具有相同数据类型的元素组成的固定长度的有序集合.比如下面的例 ...

  8. Flutter Platform Channels

    Flutter Platform Channels(一) https://www.jianshu.com/p/33ac774f99b1 https://www.jianshu.com/p/c1e206 ...

  9. kali之使用sqlmap进行sql注入

    sqlmap简介 sqlmap支持五种不同的注入模式: 1.基于布尔的盲注,即可以根据返回页面判断条件真假的注入. 2.基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是 ...

  10. 采用__call__ 实现装饰器模式

    装饰器模式在实现中也是很常见的:比如手机贴膜,手机壳 都是为了给手机增加一些额外功能 增加耐操 装饰器模式的本质就是对对象二次包装,赋额外功能 __call__ __call__是python魔术方法 ...