我正在向一个我无法控制的远程广泛API发送一个回调URL。
我已经编写了我的回调视图,并且在myapp_callback
中已正确命名(例如,urls.py
),所以我所要做的就是致电reverse('myapp_callback')
,对吧? That's what it says in the manual.
嗯,不是那么多。结果是/myapp/callback
。我的协议和主机名在哪里?我发送这些API调用的远程服务不知道。如何在Apache反向代理后面检测到它?
我正在通过将完整的URL放入设置文件来解决此问题,但我希望提供更多“交钥匙”解决方案。
答案 0 :(得分:2)
试用request.build_absolute_uri(reverse('myapp_callback'))
。
返回位置的绝对URI形式。如果未提供位置,则该位置将设置为 request.get_full_path()。
如果该位置已经是绝对URI,则不会更改。否则,绝对URI是使用此请求中可用的服务器变量构建的。