【问题标题】:Two get requests in one django APIView一个 django APIView 中有两个 get 请求
【发布时间】:2019-07-22 08:31:48
【问题描述】:

我有一个用于 X 对象的 APIView。我想要一个获取请求get_X(接收X 对象的ID)和一个获取请求get_multiple_X(获取所有X 对象)。

目前的解决方案是:我们有两个APIView:一个叫XView(包含get_X),第二个叫XListView(包含get_multiple_X)。 有没有办法在同一个 APIView 中发出两个请求?我只想拥有一个 APIView (XView)。

在这种情况下,最佳做法是什么?

【问题讨论】:

  • 您可能要考虑使用ViewSets:django-rest-framework.org/api-guide/viewsets
  • @WillemVanOnsem 谢谢!这似乎正是我所需要的!
  • @WillemVanOnsem 实际上这也会在一天结束时将视图分隔为单独的视图,所以我想我最好继续使用当前的解决方案,因为它是相同的。
  • 通常它包含很多样板代码,因此ModelViewSet 通常只需要一个模型和序列化程序。当然,如果与 get 相比,list 所做的事情完全不同,那么你可以以不同的方式实现它。 django-rest-framework.org/api-guide/viewsets/#modelviewset
  • @WillemVanOnsem 我明白你说的。逻辑不是很复杂,视图位于同一个文件中。 modelviewset 看起来很有趣,我会探索它。感谢您的帮助!

标签: python django rest


【解决方案1】:
def get_X_common(request,id=''):  // the id will get in url
    if id:
       get_X() // get x single data using id 
    else:
       get_multiple_X() // get all data list

【讨论】:

  • 这似乎不是一个好习惯,但感谢您的帮助。我也想过,但我想要两个独立的功能。
  • 是的,您可以使用两个功能。我在上面的代码中也这样做。 get_X() 和 get_multiple_X() 是在函数中调用的两个独立函数
  • 我认为两个单独的端点会更好,但我明白您要解决的问题。谢谢
猜你喜欢
  • 1970-01-01
  • 2019-06-08
  • 1970-01-01
  • 2020-03-03
  • 1970-01-01
  • 2013-11-02
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多