如果我不重复API端点,则Django Get请求将返回空数组

时间:2018-08-14 14:47:31

标签: django django-rest-framework

在过去的两个月中,我一直在以一种非常怪异的行为而挣扎,无法忍受。

我的Django应用网址文件之一如下所示:

urlpatterns = {
    path('containers/', GetProductContainers.as_view()),
    path('delete/<deleteTime>', DeleteProcessedStockTime.as_view()),
    path('containers/', GetProductContainers.as_view()),
    path('input/', InsertMultiProcessedStock.as_view()),
    path('<str:stockT>/', ProcessedStockTimeView.as_view(), name="stockstime"),
    path('', ProductListDetailsView.as_view(), name="details"),
} 

如您所见,此路径path('containers/', GetProductContainers.as_view()),在我的urlpatterns中是两次。这样做的原因是,只要删除一个,它就会返回一个空数组。 删除哪一个都没关系!如果两者都存在,我将获得我期望的319条记录。我可以删除两个中的任何一个,它将返回一个空数组,但是一旦我有2个,它就会再次起作用。

任何人都可以想到一个解释,或者我什至可以开始调试它吗?

1 个答案:

答案 0 :(得分:5)

我相信这是因为您将urlpatterns创建为一个集合而不是一个列表。 集合是无序类型的,因此无法以正确的顺序解析网址格式。

示例:

>>> {
...     path('containers/', TestView.as_view()),
...     path('delete/<deleteTime>', TestView.as_view()),
...     path('input/', TestView.as_view()),
...     path('<str:stockT>/', TestView.as_view(), name="stockstime"),
...     path('', TestView.as_view(), name="details"),
... }
{<URLPattern '<str:stockT>/' [name='stockstime']>, <URLPattern '' [name='details']>, <URLPattern 'containers/'>, <URLPattern 'delete/<deleteTime>'>, <URLPattern 'input/'>}


>>> [
...     path('containers/', TestView.as_view()),
...     path('delete/<deleteTime>', TestView.as_view()),
...     path('input/', TestView.as_view()),
...     path('<str:stockT>/', TestView.as_view(), name="stockstime"),
...     path('', TestView.as_view(), name="details"),
... ]
[<URLPattern 'containers/'>, <URLPattern 'delete/<deleteTime>'>, <URLPattern 'input/'>, <URLPattern '<str:stockT>/' [name='stockstime']>, <URLPattern '' [name='details']>]