Python 在Django中服务多个域
我目前有两个域,我想通过使用Apache(和wsgi)共享一个Django项目 我使用了我在这里找到的以下指南: 注意:域1不使用数据库,但域2使用数据库。我目前在主settings.py文件中配置了一个数据库 我首先遇到的问题是,找到了domain1的模板,但对于domain2,它无法找到它。经过一些故障排除,我将模板目录添加到domain2\u settings.py文件中。尽管我希望主settings.py文件能够获取这些信息。 现在我得到一个错误,domain2找不到数据库,从调试输出可以看出没有分配数据库。尽管我希望数据库设置可以从主settings.py文件中提取 以下是我的布局摘要:Python 在Django中服务多个域,python,django,Python,Django,我目前有两个域,我想通过使用Apache(和wsgi)共享一个Django项目 我使用了我在这里找到的以下指南: 注意:域1不使用数据库,但域2使用数据库。我目前在主settings.py文件中配置了一个数据库 我首先遇到的问题是,找到了domain1的模板,但对于domain2,它无法找到它。经过一些故障排除,我将模板目录添加到domain2\u settings.py文件中。尽管我希望主settings.py文件能够获取这些信息。 现在我得到一个错误,domain2找不到数据库,从调试输出可
/opt/
`-- django
|
`-- myproject
|-- __init__.py
|-- domain1
| |-- __init__.py
| |-- domain1.wsgi
| |-- domain1_settings.py
| |-- domain1_urls.py
| |-- models.py
| |-- tests.py
| |-- views.py
|-- domain2
| |-- __init__.py
| |-- domain2.wsgi
| |-- domain2_settings.py
| |-- domain2_urls.py
| |-- models.py
| |-- tests.py
| |-- views.py
|-- manage.py
|-- settings.py
|-- templates
| |-- domain1-base.html
| |-- domain2-base.html
`-- urls.py
设置.py
[root@william myproject]# cat settings.py
# Django settings for myproject project.
DEBUG = False
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', 'your_email@example.com'),
)
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '123', # Or path to database file if using sqlite3.
'USER': '123', # Not used with sqlite3.
'PASSWORD': '##########', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '' # Set to empty string for default. Not used with sqlite3.
},
}
[root@william myproject]# cat domain2/domain2_settings.py
from settings import *
DEBUG = True
TEMPLATE_DEBUG = DEBUG
SITE_ID = 2
ROOT_URLCONF = 'domain2.domain2_urls'
TEMPLATE_DIRS = (
"/opt/django/myproject/templates"
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'domain2',
)
domain2\u settings.py
[root@william myproject]# cat settings.py
# Django settings for myproject project.
DEBUG = False
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', 'your_email@example.com'),
)
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '123', # Or path to database file if using sqlite3.
'USER': '123', # Not used with sqlite3.
'PASSWORD': '##########', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '' # Set to empty string for default. Not used with sqlite3.
},
}
[root@william myproject]# cat domain2/domain2_settings.py
from settings import *
DEBUG = True
TEMPLATE_DEBUG = DEBUG
SITE_ID = 2
ROOT_URLCONF = 'domain2.domain2_urls'
TEMPLATE_DIRS = (
"/opt/django/myproject/templates"
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'domain2',
)
我这样做是否正确(即多个域、单个项目、apache和使用单个数据库)?问题是我在domain2文件夹中仍然有一个settings.py和urls.py文件。一旦我删除了这些,问题就解决了。看起来您已经创建了一个包含两个“应用程序”的“项目”。如果这两个地点不同,它们应该是两个独立的“项目”。如果它们非常相似,你可以用一个“应用程序”在一个“项目”中完成。