【问题标题】:Django simple REST with class based view具有基于类的视图的 Django 简单 REST
【发布时间】:2013-03-31 02:45:30
【问题描述】:

我是 Django 新手,我正在寻找一种方法,让基于类的视图使用类中的几种方法响应 GET、POST、PUT、DELETE。例如

  • 索引#GET
  • 显示#GET
  • 新#GET
  • 编辑#GET
  • 创建#POST
  • 更新#PUT
  • 删除#DELETE

我的主要原因是将我的代码组织在一个类中。目前我正在使用一个类来处理新的和创建操作,另一个来处理编辑和更新操作。这感觉有点笨拙。

我使用过 Spring、Symfony、Rails,它们都提供了一种简单的方法来做到这一点。 Django 似乎有很多选项(tastypie,rest-framework),但我看不到任何支持这一点的选项。有什么办法支持吗?

提前致谢。

【问题讨论】:

    标签: django


    【解决方案1】:

    我并不完全肯定,但我认为您将 REST 术语与“在单个类中处理不同类型的请求”混为一谈。 rest-framework 和 Tastypie 将启用资源定义、序列化和反序列化、django 模型之间的管道、资源的标准化 API。

    另一方面,仅使用 django class-based views 您可以获得所需的内容:在由 X、Y、Z 混合组成的单个类中回答不同类型的请求,并将单个 URL 指向它,但这并没有不要让它完全“休息”。

    使用单个 CBV 似乎是个好主意,但请记住,随着视图变得越来越复杂,最初的笨拙肯定会以更耦合的方式重新出现。

    编辑:也许django-extra-views 可以在某些方面为您提供帮助。

    【讨论】:

    • 感谢您的回复。我只是想找出可能的方法并学习最佳实践。我试图重新创建我用 Spring 实现的内容。例如,我将在控制器中创建 7 个方法,然后使用注释公开它们。 Springs 内容协商将提供正确的序列化。但即使我不使用 REST,我仍然喜欢使用这种方法来组织我的代码。现在我可以看到 Django 提供的开箱即用视图的范围(顺便说一句,很棒的链接),也许我采用的方法是正确的,然后在适当的地方使用 Tastypie 公开我的模型。
    猜你喜欢
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 2011-09-18
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多