0

これらは私の見解です:

# This view is accessed by going to "/CMS/app"
class AppPageView(TemplateView):
    template_name = "app.html"

    @method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
        return super(AppPageView, self).dispatch(*args, **kwargs)

# This view is accessed by going to "/user/:user_id"
class user_detail(APIView):
    """
    Get, update or delete a specific user.
    """
    permission_classes = (IsAuthenticated,)

    def get_object(self, pk):
        try:
            return User.objects.get(pk=pk)
        except User.DoesNotExist:
            raise Http404

    def get(self, request, pk):
        user = self.get_object(pk)
        serializer = UserSerializer(user)
        return Response(serializer.data)

URL に移動してこれらのビューのいずれかにアクセスすると、次のようなデフォルトの DjangoRestFramework ページが表示されます。

User Detail
Get, update or delete a specific user.

GET /CMS/users/8
HTTP 403 FORBIDDEN
Content-Type: application/json
Allow: GET, PUT, DELETE, HEAD, OPTIONS
Vary: Accept

{
    "detail": "Authentication credentials were not provided."
}

デフォルトの DRF ページを表示する代わりに、ログイン ページにリダイレクトするように変更することはできますか? (ログインページのURLは「/login」です)。

注: 1 つのビューに Django TemplateView を使用し、もう 1 つのビューに DRF APIView を使用していますが、ログインせずに URL にアクセスしようとすると、どちらも DRF のデフォルト 403 ページにリダイレクトされます。

4

1 に答える 1