Django:Urls 可选查询参数
Django: Urls Optional Query Parameters
Urls.py:
app_name = 'main'
urlpatterns = [
path('',include(router.urls)),
path('player_id=<str:player>%season_id=<str:season>',views.MatchesList.as_view())
]
Views.py
class MatchesList(generics.ListAPIView):
serializer_class = MatchesSerializer
permissions = (IsAuthenticated)
def get_queryset(self):
player = self.kwargs['player']
season = self.kwargs['season']
if season is None:
queryset = Matches.objects.filter(player=player).all()
else:
queryset = Matches.objects.filter(player=player,season=season).all()
return queryset
有没有不带参数'season'请求的方法?类似的东西:
app_name = 'main'
urlpatterns = [
path('',include(router.urls)),
path('player_id=<str:player>',views.MatchesList.as_view())
]
当然可以。在 DRF 中,你 can/should 为此使用 filtering。
在 urls.py
中你会得到这样的东西:
path('matches/<str:player_id>/', views.MatchesList.as_view())
你的 URL 看起来像:
https://yourhost.com/matches/42/?season=spring
对于 season
,您必须实施过滤器(有多种方法可以实现)。过滤器是可选的——如果你不通过 URL 的 ?season=something
部分,它就不会被应用。
Urls.py:
app_name = 'main'
urlpatterns = [
path('',include(router.urls)),
path('player_id=<str:player>%season_id=<str:season>',views.MatchesList.as_view())
]
Views.py
class MatchesList(generics.ListAPIView):
serializer_class = MatchesSerializer
permissions = (IsAuthenticated)
def get_queryset(self):
player = self.kwargs['player']
season = self.kwargs['season']
if season is None:
queryset = Matches.objects.filter(player=player).all()
else:
queryset = Matches.objects.filter(player=player,season=season).all()
return queryset
有没有不带参数'season'请求的方法?类似的东西:
app_name = 'main'
urlpatterns = [
path('',include(router.urls)),
path('player_id=<str:player>',views.MatchesList.as_view())
]
当然可以。在 DRF 中,你 can/should 为此使用 filtering。
在 urls.py
中你会得到这样的东西:
path('matches/<str:player_id>/', views.MatchesList.as_view())
你的 URL 看起来像:
https://yourhost.com/matches/42/?season=spring
对于 season
,您必须实施过滤器(有多种方法可以实现)。过滤器是可选的——如果你不通过 URL 的 ?season=something
部分,它就不会被应用。