在我的项目中,我试图在我的视图中点击一个url(在同一个项目中运行)。
所以最简单的方法我可以在这里解释一下。
@login_required
def my_api_view(request):
if requests.method == 'GET':
# do stuff
return JsonResponse()
# and its url is `/api/get-info/`
另一种在api上消费的观点
@login_required
def show_info(request):
url = get_base_url + /api/get-info/ # http://localhost:8000/api/get-info/
r = requests.get(url)
return HttpResponse(r.json())
现在我必须使用相同的会话(需要登录),所以当我使用requests
点击网址时,它会抱怨用户没有登录,这显然是正确的。
如何优雅高效地完成这项工作。会话使用登录用户。 (我不想将视图称为函数,我想点击api-url终点并消耗。
PS:我们在django Test self.client.get(...)
答案 0 :(得分:2)
只需调用该视图函数并将request
对象作为参数传递给它。
@login_required
def show_info(request):
r = my_api_view(request)
return HttpResponse(r.json())
或者更好的选择是简单地将逻辑分成单独的函数,如@koniiiik在评论中所述。
编辑:或者,如果您真的想要点击网址,可以直接将Cookie值传递给您提出的请求。
@login_required
def show_info(request):
url = get_base_url + "/api/get-info/" # http://localhost:8000/api/get-info/
r = requests.get(url, cookies=request.COOKIES)
return HttpResponse(r.json())