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

如何通过修改域名前缀调用Django应用views.py的不同函数

实现方案

完全可以实现,核心逻辑是解析请求的子域名前缀,映射到views.py中对应的函数即可,操作步骤如下:

1. 基础部署配置

  • 首先在域名解析服务商处添加泛解析记录,将*.content.com的A记录/CNAME指向Django应用部署的服务器IP/别名
  • 配置服务器反向代理(Nginx/Apache等),将所有*.content.com的请求都转发到Django运行的WSGI/ASGI服务,以Nginx为例,配置中server_name字段填写*.content.com即可匹配所有子域名请求
  • 若需要支持HTTPS,需提前申请*.content.com的泛域名SSL证书,避免子域名访问时报证书错误

2. Django 侧逻辑实现

你可以根据需求选择两种实现方式:

方式1:手动编写子域名路由中间件(无额外依赖)

适合子域名直接映射到单个视图函数的场景:

  1. 在Django项目根目录新建middleware.py,添加如下代码:
from django.http import Http404
from . import views

class SubdomainRouterMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response
        # 子域名前缀与视图函数的映射表,可按需求扩展
        self.subdomain_view_map = {
            "example": views.example_func,
            # 示例:新增其他前缀映射 "test": views.test_func
        }

    def __call__(self, request):
        # 从请求头读取Host字段
        host = request.META.get("HTTP_HOST", "").lower()
        # 拆分Host获取子域名前缀
        host_parts = host.split(".")
        # 匹配xxx.content.com格式的域名
        if len(host_parts) == 3 and host_parts[1] == "content" and host_parts[2] == "com":
            subdomain_prefix = host_parts[0]
            if subdomain_prefix in self.subdomain_view_map:
                # 调用对应视图函数,逻辑与普通URL路由一致
                return self.subdomain_view_map[subdomain_prefix](request)
        # 未匹配到的请求走原有Django路由逻辑,也可以直接返回404
        return self.get_response(request)
  1. 在settings.py的MIDDLEWARE列表中注册上述中间件,建议放在靠前的位置:
MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    # 新增子域名路由中间件,替换为你实际的项目路径
    "your_project_name.middleware.SubdomainRouterMiddleware",
    # 其他原有中间件保持不变
    ...
]

方式2:使用第三方子域名路由扩展

如果需要更复杂的规则(比如子域名下还要匹配多级URL路径),可以使用Django生态中专用于子域名路由的第三方扩展,配置逻辑与原生Django路由基本一致,可快速实现子域名到视图/urls模块的映射。

注意事项

  • 建议统一维护子域名和视图的映射规则,不要散落在代码各处,方便后续迭代调整
  • 需要对解析到的子域名前缀做合法性校验,避免恶意构造的Host头引发安全问题
  • 本地测试时可以修改系统hosts文件,添加127.0.0.1 example.content.com这类记录验证功能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:48:04