9

当您想在 Django 中“RESTify”您的 Django 项目时,您更喜欢什么?

我得出的结论是,实际上有三种选择可以做到这一点:

对我来说这样做的正确方法是尝试所有这些并选择最适合我的那个,所以同时我想听听你的......

谢谢。

4

4 回答 4

7

我最熟悉 django-piston,所以我自然会引导你朝那个方向发展。

但是,快速浏览一下其他两个,表明 django-rest-interface 只是将模型公开为资源,而 django-restful-resources 是某些人的一次性尝试。

如果我没记错的话,Piston 源于bitbucket.org自己的站点开发,并具有很大的灵活性——您可以从资源的访问方法中返回几乎任何对象,而不仅仅是模型实例,并且它会被正确编码。它还内置了对一些不错的功能的支持,比如表单验证(如果你能让它正常工作的话)和请求限制等等。

于 2010-11-20T18:55:38.147 回答
5

使用 django 1.3 中新的基于类的通用视图,使用自定义序列化器和反序列化器实现您自己的休息接口将非常容易,只需使用股票代码即可复制几乎完整的活塞实现。我用 500 行代码制作了一个基于 View(1.3) 的 rest 模块,具有通用的 RESTful 资源类和子资源、对关联的自然键支持、json 和 XML 序列化等等。该模块真的是根据我的应用程序的要求量身定制的

我这样做是为了克服活塞代码中的一些限制,例如在处理程序调用 .get() 之前修改查询集(例如,使用 .values(...)),或者无法使用模型的方法在序列化中。

如果您根据需要进行操作,几天后您将拥有一组工作的类和混入,您将完全理解并控制它们。

于 2011-01-31T21:49:31.040 回答
3

作为编写 django-restful-resources 的“一些人”,我想澄清它为什么存在。这不是将模型公开为资源的尝试,而是一种允许将单个 URL 映射到多个不同处理程序方法的方法,每个 HTTP 动词一个。就这样。它可用于公开模型对象,但也可用于将服务公开为资源或您希望通过单个 URL 和 HTTP 动词与之交互的任何其他内容。如果您正在寻找功能更全面的解决方案,那么请务必选择 Piston。

于 2010-12-02T22:15:06.527 回答
2

正如 eternicode 所提到的,django-piston非常棒。它成熟,功能强大,并且拥有良好的社区。目前似乎确实缺乏很多持续的发展,尽管有人谈论社区驱动的分叉,所以这可能会改变。

django-tastypie也很值得一看,目前看来背后有很大的推动力。

我还刚刚发布了另一个值得考虑的选项:django-rest-framework。它背后有一些非常好的功能,例如API 自动文档

正如 saverio 所提到的,它使用 Django 1.3 的基于类的视图,这意味着您可以直接放入它提供的一些 MixIn 类,而不必直接使用该框架。(例如添加 HTTP 内容协商以将输出序列化为多种类型

于 2011-01-31T13:24:05.970 回答