如何在Django模板中获取我网站的域名?

218 投票
19 回答
225980 浏览
提问于 2025-04-15 14:27

我想在Django模板中获取我当前网站的域名,应该怎么做呢?我试过在标签和过滤器里找,但没有找到相关的内容。

19 个回答

133

我发现了一个叫做 {{ request.get_host }} 的方法。

137

如果你想获取实际的 HTTP Host 头信息,可以看看 Daniel Roseman 对 @Phsiao 回答的评论。另一种选择是,如果你在使用 contrib.sites 框架,你可以在数据库中为一个网站设置一个规范的域名(把请求的域名映射到一个设置文件中,使用正确的 SITE_ID 这一点需要你自己通过服务器设置来完成)。在这种情况下,你需要关注的是:

from django.contrib.sites.models import Site

current_site = Site.objects.get_current()
current_site.domain

如果你想使用 current_site 对象,你需要自己把它放到模板上下文中。如果你到处都在用这个对象,可以考虑把它打包成一个模板上下文处理器。

91

我觉得你想要的是能够访问请求的上下文,看看RequestContext。

撰写回答