如何在访问“ListAPIView”时添加逻辑?

2024-10-02 16:31:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在访问横幅列表时使用BannerListAPIView

class BannerListAPIView(ListAPIView):
    serializer_class = WebsiteBannerSerializer
    permission_classes = []
    queryset = WebsiteBanner.objects.all()

但是我想在访问这个ListAPIView时添加我的逻辑,比如我想记录remote_ip

当我访问这个ListAPIView时,如何添加我的逻辑


编辑

我只想知道当用户访问ListAPIView时,在哪里可以添加自定义逻辑


Tags: 列表objects记录逻辑allclassclassesqueryset
2条回答

如果你想为应用程序范围内的每个请求记录IP,你可能需要考虑使用[中间件],而不是在视图级别这样做,这可能被认为是不好的做法

您可以重写类的list()函数,如下所示:

class BannerListAPIView(ListAPIView):
    serializer_class = WebsiteBannerSerializer
    permission_classes = []
    queryset = WebsiteBanner.objects.all()

    def list(self, *args, **kwargs):
        # YOUR LOGIC
        return super(BannerListAPIView, self).list(*args, **kwargs)

相关问题 更多 >