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)