在Django应用程序中查找主机和端口

时间:2014-07-17 16:32:49

标签: python django localhost httprequest host

我正在连接Twitter Streaming API并正在设置OAuth握手。我需要请求令牌并发送callback_url作为params字典以及发布请求。

我已经在开发的网址(http://localhost:8000/oauth)中进行了硬编码,但是当我部署时,这会改变。我想设置一些能够找到主机和端口并设置引用的东西。理想情况下,看起来像"http://%s/oauth" % (domain_name)

我尝试过使用os和socket模块,代码如下:

class OAuth:

    def request_oauthtoken(self):
        name = socket.gethostname()
        ip = socket.gethostbyname(name)
        domain = socket.gethostbyaddr(ip) # Sequence attempts to find the current domain name.  This will add expandability to the calling the API, as opposed to hard coding it in.  It's not returning what I'm expecting


        payload = { 'oauth_callback': 'http://localhost:8000/oauth' }
        print(domain)
        return payload

domain返回('justins-mbp-2.local.tld', ['145.15.168.192.in-addr.arpa'], ['192.168.15.145'])

name返回上面元组的第一个元素,ip返回从集合中解包的元组的最后一项。

我正在寻找localhostlocalhost:8000的返回值。我可以和任何一个合作。

1 个答案:

答案 0 :(得分:1)

致电request.build_absolute_uri(),然后提取域名。

文档:

  

HttpRequest.build_absolute_uri(location)返回绝对URI表单   的位置。如果未提供位置,则位置将设置为   request.get_full_path()。

     

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

     

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