我想在视图中发送http请求。请求URL与另一个视图相关。像这样:
class View_A(APIView):
def get(self, request):
return Response({'foo':'bar'})
class View_B(APIView):
def post(self, request):
# Here I would want to send a request to View_A, something like this:
request_view_A = View_A.as_view().get('URL_FROM_VIEW_A')
# ...
return Response({'foo2':'bar2'})
我看到了这个question,它有不同的重点,但是对我不起作用,因为View_A
(获取)的http方法不同于View_B
的http方法(发布)。
答案 0 :(得分:2)
您可以执行以下操作:
class View_B(APIView):
def post(self, request):
httpresponse = View_A().get(request)
# …
return Response({'foo2':'bar2'})
我们在这里实际上并没有发出HTTP请求,我们只是进行方法调用并使用request
作为参数。
话虽如此,通常这意味着您应该“封装”逻辑。因此,通常一个人定义了额外的函数或类(通常不是视图),这些函数或类实现了通常在两个视图中使用的通用逻辑。
答案 1 :(得分:0)
Willem Van Onsem answer的替代方法可以使用python请求包。示例:
import requests
#...
class View_B(APIView):
def post(self, request):
response = requests.get(your_url)
# ...
return Response({'foo2':'bar2'})