从单个Django应用程序中服务多个网站
项目描述
README
使用pip安装
pip install django-multisite
或者通过git获取代码
git clone git://github.com/ecometrica/django-multisite.git django-multisite
然后运行
python setup.py install
或者将django-multisite/multisite文件夹添加到您的PYTHONPATH。
如果您想贡献,请运行
python setup.py develop
快速入门
将settings.py中的SITE_ID替换为
from multisite import SiteID SITE_ID = SiteID(default=1)
将这些添加到您的 INSTALLED_APPS 中
INSTALLED_APPS = [ ... 'django.contrib.sites', 'multisite', ... ]
在 settings.py 中添加 TEMPLATES loaders 的 OPTIONS 部分
TEMPLATES = [ ... { ... 'DIRS': {...} 'OPTIONS': { 'loaders': ( 'multisite.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', ) } ... } ... ]
编辑 settings.py 中的 MIDDLEWARE(对于 Django < 1.10 为 MIDDLEWARE_CLASSES)
MIDDLEWARE = ( ... 'multisite.middleware.DynamicSiteMiddleware', ... )
在 settings.py 中追加,以便使用可以安全清除的自定义缓存
# The cache connection to use for django-multisite. # Default: 'default' CACHE_MULTISITE_ALIAS = 'multisite' # The cache key prefix that django-multisite should use. # If not set, defaults to the KEY_PREFIX used in the defined # CACHE_MULTISITE_ALIAS or the default cache (empty string if not set) CACHE_MULTISITE_KEY_PREFIX = ''
如果您已将 CACHE_MULTISITE_ALIAS 设置为自定义值,例如 “multisite”,则请在 settings.py 的 CACHES 中添加单独的后端
CACHES = { 'default': { ... }, 'multisite': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 'TIMEOUT': 60 * 60 * 24, # 24 hours ... }, }
多站点通过检查所有别名域名来确定 ALLOWED_HOSTS。您还可以设置 MULTISITE_EXTRA_HOSTS 以包含额外的主机。这可以包括通配符。
MULTISITE_EXTRA_HOSTS = ['example.com'] # will match the single additional host MULTISITE_EXTRA_HOSTS = ['.example.com'] # will match any host ending '.example.com'
开发环境
在“开发模式”下(默认为与默认 SiteID 关联的别名),多站点返回有效的别名
- 开发模式是以下之一
运行测试,即 manage.py test
本地运行 settings.DEBUG = True,其中主机名为顶级名称,即 localhost
为了使多站点在本地环境中使用别名,请在您的本地 etc/hosts 文件中添加条目以匹配应用程序中的别名。例如
127.0.0.1 example.com 127.0.0.1 examplealias.com
然后在 example.com:8000 或 examplealias.com:8000 访问您的应用程序,而不是通常的 localhost:8000。
域名回退
默认情况下,如果域名未知,多站点将响应 HTTP 404 Not Found 错误。要更改此行为,请向 settings.py 添加
# The view function or class-based view that django-multisite will # use when it cannot match the hostname with a Site. This can be # the name of the function or the function itself. # Default: None MULTISITE_FALLBACK = 'django.views.generic.base.RedirectView # Keyword arguments for the MULTISITE_FALLBACK view. # Default: {} MULTISITE_FALLBACK_KWARGS = {'url': 'http://example.com/', 'permanent': False}
模板
如有必要,为域名级别的模板创建模板子目录(在 settings.TEMPLATES['DIRS'] 中指定的位置)。
多站点的模板加载器将在名为域名的文件夹中查找模板,例如
templates/example.com
模板加载器还会在由可选的 MULTISITE_DEFAULT_TEMPLATE_DIR 设置指定的文件夹中查找模板,例如
templates/multisite_templates
测试
要运行测试
python setup.py test
或者
pytest
在部署更改之前,为了验证它没有通过运行
tox
这将运行所有受支持的 Django 和 Python 组合的测试。
项目详情
下载文件
下载您平台的文件。如果您不确定要选择哪一个,请了解更多关于 安装包 的信息。
源分发
构建发行版
django-multisite-1.9.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5254dc2df69a6315f5ac05cbbfbb045b361044e739c8849d66151847816d8299 |
|
MD5 | e4ca137faf8e7c1240e4ef20bf35cb38 |
|
BLAKE2b-256 | db90ea21931bc1fa5ad4bd23e957d979967a8b0c287a242058060aeda58a6882 |
django_multisite-1.9.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 266216fb39a6c61a058a5fe0eef3988c26e5bb4f3af6d3f35b41a3a779279336 |
|
MD5 | 27f59ebe5e08d7b3f7fe7338fe0a7322 |
|
BLAKE2b-256 | c8bf0472ef58086eb967d6c18803c5ce1479400ea37f9693152ad70355e84994 |