代码之家  ›  专栏  ›  技术社区  ›  user2896120

查看调用终结点的内容?

  •  1
  • user2896120  · 技术社区  · 6 年前

    我使用的是django的rest框架包。当按下follow按钮时,我试图创建一种处理post请求的方法。到目前为止,在api视图方面,我有这样一个:

    class FollowToggle(APIView):
        def post(self, id=None):
            target      = get_object_or_404(User, id=id)
            follower    = self.request.user
    
            if follower.is_authenticated():
                if follower in target.followers.all():
                    target.followers.delete(follower)
    
                else:
                    target.followers.create(follower)
    
            data = {
                "success": 1
            }
    
            return Response(data)
    

    现在我想做的是使用profileview,我想通过执行用特定参数创建的apieview来处理post请求。我该怎么做?

    class ProfileView(DetailView):
        model = User
        slug_field = 'username'
        template_name = 'accounts/profile.html'
        if request.method == 'POST':
               //Call the API with the parameters
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Umair Mohammad    6 年前

    我认为如果您想在多个地方使用相同的逻辑,那么您应该将其重构为一个单独的模块,如下所示:

    def follow_unfollow(follower, id):
        target = get_object_or_404(User, id=id)
    
        if follower.is_authenticated():
            if follower in target.followers.all():
                target.followers.delete(follower)
                return False
            else:
                target.followers.create(follower)
                return True
    
        return False
    

    然后您可以在这两个地方使用这个模块[跟随toggle api和profileview]

    如果要调用followToggle API,则可以使用 reverse 获取followttoggle api的url,然后向该端点发出post请求