2017-02-09 8 views
0

JSONデータを取得するための次のurlpatternsおよびAPIViewがあります。彼らは最後のもの 'pollutant_daily_means'を除いて、すべての作業を行い、データを返します。 'site_daily_means'のビューを削除すると、 'pollutant_daily_means'は必要なデータを返します。別のビューの動作を停止するAPIビュー

上記の「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) 

上記のURLとビューから、これに関する明確な理由は誰にも分かりますか?

答えて

1

(?P<poll>\w+d+)と一致するものは、最初に(?P<url>\w+)と一致するので、site_daily_meansビューが実行されます。

pollutant_daily_meansのURLパターンを変更すると、これを修正できます。 to:

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

この場合、\w+\d+はおそらく不要です。 pollフィールドに既にDailyMeanをフィルタリングしているため、\w+に簡略化することができます。

+0

ありがとうございました! – Paulos

関連する問題