如何在不对网址进行硬编码的情况下从管理命令向视图发送请求

时间:2015-11-18 16:00:36

标签: django django-views

我正在尝试创建一个管理命令来模拟与视图关联的一些api调用,但我不想对网址进行硬编码,例如像url='http://127.0.0.1:8000/api/viewname'那样,以便发送请求。

如果我使用反向选项,我可以获得一半的网址/api/viewname。 如果我尝试以这种方式发布请求

url = reverse('name-of-view')
requests.post(url, data=some_data)

我得到了

requests.exceptions.MissingSchema: Invalid URL '/api/viewname/': No schema supplied. Perhaps you meant http:///api/viewname/?

我是否必须查看服务器是在localhost上运行还是有更通用的方式?

1 个答案:

答案 0 :(得分:1)

requests模块需要绝对网址发布到。你需要

url = 'http://%s%s' % (request.META['HTTP_HOST'], reverse('name-of-view'))     
requests.post(url, data=some_data)