我正在使用Django的REST框架包。我正在尝试创建一种方法来处理按下跟随按钮时的POST请求。到目前为止,在API View方面我有这个:
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,我想通过执行我用特定参数创建的APIView来处理POST请求。我该怎么做?
class ProfileView(DetailView):
model = User
slug_field = 'username'
template_name = 'accounts/profile.html'
if request.method == 'POST':
//Call the API with the parameters
答案 0 :(得分:1)
我认为如果你想在不止一个地方使用相同的逻辑,那么你应该将它重构为一个单独的模块,如下所示:
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
获取followToggle api的url,然后向该端点发出POST请求