REST framework包含了一个可以处理ViewSets的抽象, 它允许开发人员专注于API的状态跟交互进行建模,并使得URL构建结构基于通用的约定自动处理. ViewSet类跟View类几乎相同,除此之外它提供了一些其他的操作,比如read或update,而不像view的get和put 一个ViewSet类最后只能绑定到一组方法处理程序,当它被实例化成一组视图时,经常使用一个Router类来处理定义的复杂的URL配置 Refactoring to use ViewSets 让我们用现在的…
REST framework提供了一个APIView类,它是Django的View类的子类. REST framework主要的几种view以及他们之间的关系: mixins 到目前为止,我们使用的创建/获取/更新/删除操作和我们创建的任何基于模型的API视图非常相似.这些常见的行为是在REST框架的mixin类中实现的 Mixin 类提供用于提供基本视图行为的操作.注意mixin类提供动作方法,而不是直接定义处理程序方法,例如 .get() 和 .post(), 这允许更灵活的行为组成. Mi…
到目前为止,API内部的关系是使用主键来代表的.在这篇教程中,我们将提高API的凝聚力和可发现性,通过在相互关系上使用超链接. Creating an endpoint for the root of our API 现在,我们已经有了snippets和users的终端,但是没有一个单独的终端指向我们的API.使用之前常规的FBV方式和@api_view装饰器创建一个.在你的app的views文件内 from rest_framework.decorators import api_view f…
到目前为止,撰写的API没有任何限制关于谁能更新.删除snippet. 我们更想要一些高级行为来确保: 1.代码段总是跟创建者有关联 2.只要认证通过的用户才能创建 3.只有创建者有权限更新或者删除 4.没有认证的请求应该有且只有完全的只读权限 Adding information to our model 我们打算在Snippet模型类上做一些改变.首先,添加一些字段,其中之一用来代表创建这个code的用户.其他的字段将用于存储代码中突出显示的HTML表示形式. 添加下面两个字段到Snippe…
从介绍Django快开始,我们就一直在使用FBV的方式来撰写代码,二者本质上并没有太大的区别,然而到了REST framework,更会倾向于用CBV来写API的视图,后面会看到这个方式的强大,它允许我们重用常用的功能,让代码更简练. Rewriting Our API using class-based view 现在开始撰写一个简单的CBV代码,打开app内的views.py文件 from rest_framework import status from rest_framework.re…
模式是一个机器可读文档,描述可用的API端点,URL以及它们支持的操作. 模式对于自动生成文档是一个很有用的工具,也可以用来动态调用可以于API交互的客户端库. Core API 为了提供模式支持,REST framework 使用核心API. 核心API是描述API的规范文档,它被用来提供可用端点的内部表现方式和API公开的可能的交互.它既可以在服务器端,也可以在客户端. 当使用在服务器端,核心代码允许API来支持对各种模式或者超媒体格式的渲染.当使用在客户端,核心API允许动态驱动客户端库,…
从这一点开始,我们将真正开始覆盖REST框架的核心.我们来介绍几个基本的构建块. 请求对象REST框架引入了Request扩展常规的对象HttpRequest,并提供更灵活的请求解析.Request对象的核心功能是request.data属性,这与request.POST使用Web API 相似但更有用. request.POST # Only handles form data. Only works for 'POST' method. request.data # Handles arbi…
建立环境 在我们做任何事情之前,我们将使用virtualenv创建一个新的虚拟环境.这将确保我们的包配置与我们正在开展的任何其他项目保持良好的隔离. virtualenv envsource env/bin/activate 现在我们在一个virtualenv环境中,我们可以安装我们的包的要求. pip install django pip install djangorestframework pip install pygments # 我们将使用这个让代码突出显示 注意:要随时退出virt…
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第六章  继承与建模高级应用 现在,你应该对实体框架中基本的建模有了一定的了解,本章将帮助你解决许多常见的.复杂的建模问题,并解决你可能在现实中遇到的建模问题. 本章以多对多关系开始,这个类型的关系,无论是在现存系统还是新项目的建模中都非常普遍.接下来,我们会了解自引用关系,并探索获取嵌套对象图的各种策略.最后,本章以继承的高级建模和实体条件结束. 6-1  获取多对多关联中的链接表 问题…
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 6-13  在基类中应用条件 问题 你想从一个已存在的模型中的实体派生一个新的实体,允许基类被实例化. 解决方案 假设你有如图6-20所示的模型. 图6-20 包含Invoice实体的模型 这个模型只包含一个单独的实体Invoice(发货单).我们想从Invoice派生一个新的实体,它表示删除掉的发货单.这将允许我们以更清晰的业务逻辑来分别对有效的发货单和已删除掉的发货进行不同的操作.按下面…