我正在使用 Python 和 Django 框架。当我想使用超链接时,我不应该手动编写完整的 URL 对吗?我必须使用一些返回域名的函数,并手动连接到它的路径。那么,我怎样才能得到域名呢?
喜欢:
为此,我想写:
"http://"+somefunction()+"/path/to/file.ext"
$_SERVER['HTTP_URI']
在 Python 中是否有等价物。
我正在使用 Python 和 Django 框架。当我想使用超链接时,我不应该手动编写完整的 URL 对吗?我必须使用一些返回域名的函数,并手动连接到它的路径。那么,我怎样才能得到域名呢?
喜欢:
为此,我想写:
"http://"+somefunction()+"/path/to/file.ext"
$_SERVER['HTTP_URI']
在 Python 中是否有等价物。
对于当前请求的原始主机,您可以使用request.get_host()
或直接访问request['HTTP_HOST']
.
对于您的需求,django 提供站点框架叉
>>> from django.contrib.sites.models import Site
>>> Site.objects.get_current().domain
'example.com'
>>> 'http://%s/path/to/file.ext' % Site.objects.get_current().domain
'http://example.com/path/to/file.ext'
没有直接回答你的问题,但是 Django 有很多方法可以为你处理 URL 构造,所以你不需要硬编码。
在您的 Python 代码中:
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
def my_redir_view(request):
return HttpResponseRedirect(reverse('another_view'))
在模板内部:
<a href="{% url 'logout' %}">Logout</a>
构建绝对 URL(在相对罕见的情况下需要它们):
redirect_uri = request.build_absolute_uri(reverse('openid_auth'))
通常,您不想手动构建 URL - 以上方法是您的朋友。