Shi*_*dla 5 python django dns django-request
我有一个域名的网站www.example1.com,最近我已经指出另一个域DNSwww.example2.com到包含www.example1.com同一台服务器,这样既www.example1.com和www.example2.com服务相同的代码,但域名应该是不同的,我想从Django的请求获得域名如下
def homepage(request):
domain = request.META['HTTP_HOST']
if domain == 'www.example1.com':
return HTTPResponseReredirect('/new/')
elif domain == 'www.example2.com':
return HTTPResponseReredirect('/old/')
Run Code Online (Sandbox Code Playgroud)
所以基于域名,我想将用户重定向到不同的网页,但每次我使用request.META['HTTP_HOST']输出时都是一个 IP 地址127.0.0.1:8001,如下所示
META:{'HTTP_ACCEPT': ‘text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8’,
'HTTP_ACCEPT_ENCODING': 'gzip, deflate, sdch, br',
'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8',
'HTTP_CONNECTION': 'close',
'HTTP_COOKIE': 'sessionid=xxxxxxxxxxxxxxxx; ',
'HTTP_HOST': '127.0.0.1:8001',
'HTTP_UPGRADE_INSECURE_REQUESTS': '1',
'HTTP_USER_AGENT': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
'PATH_INFO': u'/',
'QUERY_STRING': '',
'RAW_URI': '/',
'REMOTE_ADDR': '127.0.0.1',
'REMOTE_PORT': '41280',
'REQUEST_METHOD': 'GET',
'SCRIPT_NAME': u'',
'SERVER_NAME': '127.0.0.1',
'SERVER_PORT': '8001',
'SERVER_PROTOCOL': 'HTTP/1.0',
'SERVER_SOFTWARE': 'gunicorn/19.0.0',
Run Code Online (Sandbox Code Playgroud)
但是如何获取实际的域名呢?
request.META['HTTP'] 显示服务器上的当前域名,如果域名未绑定,则显示 IP 地址。
例如我的项目中有这个功能
def test(request):
return HttpResponse("{}".format(request.META['HTTP_HOST']))
Run Code Online (Sandbox Code Playgroud)
我假设您在本地服务器中测试代码,这就是您的输出为 127.0.0.1:8001 的原因。如果您将域名设置为您的服务器,我想一切都会正常:)
| 归档时间: |
|
| 查看次数: |
7203 次 |
| 最近记录: |