Ich habe einige Seite, die verschiedene Spieler eines Teams anzeigt. In der Konfiguration können Sie zwischen den Teams wechseln, wenn Sie also TEAM_NAME = 'test'
setzen, lädt das offensichtlich das Testteam. Das Problem ist, dass wenn Sie TEAM_NAME = 'test2'
setzen, startet es für dieses Team, aber ich kann immer noch die URL ändern, um zwischen den Teams zu wechseln (während ich nur das ausgewählte Team sehen sollte)Django Zugriff auf bestimmte Objekte zu beschränken
Die URL sieht wie folgt: http://127.0.0.1:8000/team/1/player/
, wobei 1
wäre das erste erstellte Team, das test
ist.
Wenn ich die Ansicht lade, möchte ich einige Berechtigungsprüfungen durchführen, um festzustellen, ob das Team der aktuellen Ansicht mit dem Team in der Konfiguration übereinstimmt. Diese
ist der Ansicht:
class PlayerList(ListView):
model = player_model
template_name = 'player_list.html'
def get_team(self):
if not hasattr(self, '_team'):
team_id = self.kwargs.get('team_id')
self._team = team_model.objects.get(pk=self.kwargs.get('team_id'))
return self._team
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
context['team'] = self.get_team()
return context
def get_queryset(self, *args, **kwargs):
queryset = super().get_queryset(*args, **kwargs)
return queryset.filter(team_id=self.kwargs.get('team_id'))
def get(self, request, *args, **kwargs):
return super(PlayerList, self).get(request, *args, **kwargs)
Arbeitete! Tweaked es ein wenig, aber danke für diese Antwort – dnsko