You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django模板中获取当前域名?

在Django模板中获取当前域名的解决方案

问题说明

你希望在Django模板中获取当前域名(如192.168.1.1:8000或mydomain.com),尝试了{{ domain }}、{{ site }}、{{ site_name }}但无效——这些变量仅在聚合框架、认证框架(如LoginView)的特定模板中自动可用,普通模板需要手动配置才能访问。

解决步骤

1. 启用并配置Django Sites框架

首先确保启用sites模块并完成基础配置:

  • 在settings.py的INSTALLED_APPS中添加:
    INSTALLED_APPS = [
        # ...其他应用
        'django.contrib.sites',
    ]
    
  • 在settings.py中设置站点ID:
    SITE_ID = 1
    
  • 执行数据库迁移,生成Site表:
    python manage.py migrate
    
    之后可在后台修改Site对象的domain和name字段,对应你的实际域名与站点名称。

2. 让所有模板全局访问Site对象

在settings.py的TEMPLATES配置中,添加sites上下文处理器,这样所有模板都能直接调用{{ site }}变量:

TEMPLATES = [
    {
        # ...其他配置
        'OPTIONS': {
            'context_processors': [
                # ...默认处理器
                'django.contrib.sites.context_processors.site',
            ],
        },
    },
]

配置完成后,模板中可通过以下变量获取信息:

  • {{ site.domain }}:当前站点的域名(含端口,如192.168.1.1:8000)
  • {{ site.name }}:当前站点的名称

你的版权代码可修改为:

<p class="text-right">&copy; Copyright {% now 'Y' %} {{ site.name }} - {{ site.domain }}</p>

3. 获取请求动态域名(适配开发/多域名场景)

如果需要根据当前请求动态获取域名(比如开发环境的随机IP+端口),可自定义上下文处理器:

  • 在你的应用目录下创建context_processors.py文件,写入:
    def dynamic_domain(request):
        return {'dynamic_domain': request.get_host()}
    
  • 在settings.py的TEMPLATES.context_processors中添加该处理器:
    'OPTIONS': {
        'context_processors': [
            # ...其他处理器
            'your_app_name.context_processors.dynamic_domain',
        ],
    },
    
  • 模板中使用{{ dynamic_domain }}即可获取当前请求的完整域名(含端口)

补充说明

  • 聚合框架、认证框架(如LoginView)会自动向模板传递{{ site }}或{{ site_name }},但普通模板需手动配置上下文处理器,或在视图中手动传入Site对象:
    from django.contrib.sites.models import Site
    from django.shortcuts import render
    
    def your_view(request):
        site = Site.objects.get_current()
        return render(request, 'your_template.html', {'site': site})
    

内容的提问来源于stack exchange,提问作者Majoris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 16:10:54