2017-02-09 28 views
0

我有以下urlpatterns和APIViews獲取JSON數據。他們都工作並返回數據,除了最後一個'pollutant_daily_means'。當我刪除'site_daily_means'的視圖時,那麼'pollutant_daily_means'返回它應該的數據。APIView停止工作的另一個視圖

如果我只刪除它上面的'site_daily_means',那麼它仍然不起作用,所以它必須與site_daily_means視圖干擾某事有關。

url(r'^api/daily-means/$', views.daily_means.as_view(), name='daily_means'), 
url(r'^api/daily-means/(?P<url>\w+)/$', views.site_daily_means.as_view()), 
url(r'^api/daily-means/(?P<poll>\w+d+)/', views.pollutant_daily_means.as_view()), 

class daily_means(APIView): 
    def get(self, request): 
     means = DailyMean.objects.all() 
     serializer = DailySerializer(means, many=True) 
     return Response(serializer.data) 

class site_daily_means(APIView): 
    def get(self, request, url): 
     means = DailyMean.objects.filter(url=url) 
     serializer = DailySerializer(means, many=True) 
     return Response(serializer.data) 

class pollutant_daily_means(APIView): 
    def get(self, request, poll): 
     means = DailyMean.objects.filter(poll=poll) 
     serializer = DailySerializer(means, many=True) 
     return Response(serializer.data) 

任何人都可以從上述網址和意見看到任何明確的原因嗎?

回答

1

任何匹配的(?P<poll>\w+d+)將首先匹配(?P<url>\w+),因此site_daily_means視圖將運行。

您可以通過更改pollutant_daily_means的網址格式來解決此問題,例如,到:

url(r'^api/daily-means/poll/(?P<poll>\w+d+)/', views.pollutant_daily_means.as_view()), 

請注意,在這種情況下\w+\d+可能是不必要的。您可以將其簡化爲\w+,因爲您已在poll字段上過濾了DailyMean

+0

工作感謝! – Paulos

相關問題