当我访问`ListAPIView`时如何添加我的逻辑?

时间:2018-01-17 06:19:08

标签: python django django-rest-framework

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

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

但我想在访问此ListAPIView时添加逻辑,例如我想记录remote_ip

访问此ListAPIView时如何添加逻辑?

修改

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

2 个答案:

答案 0 :(得分:0)

你可以像这样覆盖你班级的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)

答案 1 :(得分:0)

如果您想为应用程序范围内的每个请求记录IP,您可能需要考虑使用[中间件]而不是在视图级别执行此操作,这可能被视为不良做法。