如何使用 Django 设置子域?

How to set subdomains with django?

我已经在 pythonanywhere.com 上部署了我的站点,现在我想在某些页面上配置子域,我想知道我在使用 django-subdomains 包时做错了什么?

我的代码如下所示:

settings.py :

... (already installed 'subdomains' in INSTALLED_APPS)

MIDDLEWARE_CLASSES = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'subdomains.middleware.SubdomainURLRoutingMiddleware', #before CommonMiddleware
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'site.urls'

SUBDOMAIN_URLCONFS = {
    None: 'site.urls',
    'www': 'site.urls',
    'web': 'pages.urls.web',
    'account': 'site.urls.login',
}

SITE_ID = 1
...

site/urls :

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^accounts/login/$', auth_views.login, name='login'),
    url(r'^', include('pages.urls')),
    url(r'^accounts/', include('utilisateur.urls')),
] ...

pages/urls :

urlpatterns = [
    ...
    url(r'^$', views.index, name="index"),
    url(r'^web/$', views.web, name="web"),
    ...
]

当我键入 web.site.ch/web/ 时,找不到地址。 www.site.ch/web/ 仍然存在,但它应该是 web.site.ch/web/accounts.site.ch/... 也是如此,为什么不存在?我应该为我的 pythonanywhere 服务器设置一个 DNS 吗?

要将网络请求发送到网络应用程序,您需要两件事:

  1. 地址的 DNS 条目
  2. PythonAnywhere 上的一个网络应用程序,其名称与 DNS 条目相匹配

django-subdomains 不会做任何一个。