从单个 Django 应用程序服务多个站点
项目描述
自述文件
使用 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', ... ]
在 OPTIONS 部分添加到您的 settings.py TEMPLATES 加载器:
TEMPLATES = [ ... { ... 'DIRS': {...} 'OPTIONS': { 'loaders': ( 'multisite.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', ) } ... } ... ]
编辑 settings.py MIDDLEWARE (MIDDLEWARE_CLASSES for Django < 1.10):
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'
开发环境
Multisite 在“开发模式”下返回一个有效的别名(默认为与默认 SiteID 关联的别名。
- 开发模式是:
运行测试,即manage.py test
在settings.DEBUG = True中本地运行,其中hostname为顶级名,即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'] 中指定的位置。
Multisite 的模板加载器将在具有域名称的文件夹中查找模板,例如:
templates/example.com
模板加载器还将在由可选的 MULTISITE_DEFAULT_TEMPLATE_DIR 设置指定的文件夹中查找模板,例如:
templates/multisite_templates
测试
要运行测试:
python setup.py test
或者:
pytest
在部署更改之前,通过运行来验证它没有破坏任何东西:
tox
这会在每个受支持的 Django 和 Python 组合下运行测试。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
django_multisite -1.9.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 266216fb39a6c61a058a5fe0eef3988c26e5bb4f3af6d3f35b41a3a779279336 |
|
MD5 | 27f59ebe5e08d7b3f7fe7338fe0a7322 |
|
布莱克2-256 | c8bf0472ef58086eb967d6c18803c5ce1479400ea37f9693152ad70355e84994 |