Django rest framework 如何在django rest框架中处理多个slug

Django rest framework 如何在django rest框架中处理多个slug,django-rest-framework,Django Rest Framework,我如何才能访问像example.com//teams/这样的网站 当然,我的团队模型通过foreignkey指向公司,但当我将其添加到我的url.py中时,它会出错 path('<slug>/teams/<slug>', views.TeamDetail.as_view(), name="TeamDetail"), 所以我找到了一个解决方案,谢谢这个thx xyres 我将我的视图编辑为: class TeamDetail(RetrieveAPIView): a

我如何才能访问像
example.com//teams/
这样的网站

当然,我的团队模型通过foreignkey指向公司,但当我将其添加到我的url.py中时,它会出错

path('<slug>/teams/<slug>', views.TeamDetail.as_view(), name="TeamDetail"),

所以我找到了一个解决方案,谢谢这个thx xyres

我将我的视图编辑为:

class TeamDetail(RetrieveAPIView):
    authentication_classes = [SessionAuthentication, BasicAuthentication]
    serializer_class = TeamDetailSerializer

    def get(self, request, company_slug, team_slug):
        if self.request.user.is_anonymous:
            raise Http404()
        companyslug = self.kwargs.get('company_slug')
        teamslug = self.kwargs.get('team_slug')
        if self.request.user.company.slug != companyslug:
            raise Http404()
        company = Company.objects.get(slug=companyslug)
        team = Team.objects.get(company=company, slug=teamslug)
        serializer = TeamDetailSerializer(team)
        return Response(serializer.data)

这非常好

添加您的TeamDetail视图实现,看看您如何处理它。您好,我已经编辑了这个问题!
class TeamDetail(APIView):
    authentication_classes = [SessionAuthentication, BasicAuthentication]
        serializer_class = TeamDetailSerializer
        lookup_field = 'slug'

    def get_object(self, company_slug, team_slug):
        if self.request.user.is_anonymous:
            raise Http404()
        elif self.request.user.company:
            user = self.request.user
            company = Company.objects.get(company_slug=slug)
            team = Team.objects.get(team_slug=slug)
            if user.company != company:
                raise Http404()
            else:
                if user.team != team:
                    raise Http404
                else:
                    return team
        else:
            raise Http404()

    def get(self, request, company_slug, team_slug, format=None):
        team = self.get_object(team_slug)
        serializer = TeamDetailSerializer(team)
        return Response(serializer.data)
class TeamDetail(RetrieveAPIView):
    authentication_classes = [SessionAuthentication, BasicAuthentication]
    serializer_class = TeamDetailSerializer

    def get(self, request, company_slug, team_slug):
        if self.request.user.is_anonymous:
            raise Http404()
        companyslug = self.kwargs.get('company_slug')
        teamslug = self.kwargs.get('team_slug')
        if self.request.user.company.slug != companyslug:
            raise Http404()
        company = Company.objects.get(slug=companyslug)
        team = Team.objects.get(company=company, slug=teamslug)
        serializer = TeamDetailSerializer(team)
        return Response(serializer.data)