Django的urlresolvers.reverse是不够的,如何得到其余的?

时间:2015-05-18 01:34:26

标签: python django

我正在向一个我无法控制的远程广泛API发送一个回调URL。

我已经编写了我的回调视图,并且在myapp_callback中已正确命名(例如,urls.py),所以我所要做的就是致电reverse('myapp_callback'),对吧? That's what it says in the manual.

嗯,不是那么多。结果是/myapp/callback。我的协议和主机名在哪里?我发送这些API调用的远程服务不知道。如何在Apache反向代理后面检测到它?

我正在通过将完整的URL放入设置文件来解决此问题,但我希望提供更多“交钥匙”解决方案。

1 个答案:

答案 0 :(得分:2)

试用request.build_absolute_uri(reverse('myapp_callback'))

  

返回位置的绝对URI形式。如果未提供位置,则该位置将设置为 request.get_full_path()

     

如果该位置已经是绝对URI,则不会更改。否则,绝对URI是使用此请求中可用的服务器变量构建的。

     

示例:http://example.com/music/bands/the_beatles/?print=true