Django 配置多站点多域名的实现步骤
作者:栖迟於一丘 时间:2022-05-23 23:53:46
起步
要介绍一个非常方便的 Django 扩展包-- django-hosts 。它能够提供在不同的子域名下访问不同的 app。例如,在项目中有多个应用 app01 、 app02 等,希望通过域名 app01.example.com 访问该应用。
安装与配置
使用 pip 进行安装:
pip install django-hosts
把它加入到 INSTALLED_APPS 中:
INSTALLED_APPS = [
...
'django_hosts',
...
]
在中间件 MIDDLEWARE 的 开头和结尾 都添加 HostsResponseMiddleware :
MIDDLEWARE = [
'django_hosts.middleware.HostsRequestMiddleware', # 头尾都要加
...
'django_hosts.middleware.HostsResponseMiddleware',
]
在 settings.py 添加配置变量:
ROOT_HOSTCONF = 'project_name.hosts' # 模块的路径,不是域名
DEFAULT_HOST = 'www' # Name of the default host, we will create it in the next steps
在settings.py同级目录创建 hosts.py 文件:
project_name/
|-- __init__.py
|-- hosts.py # `ROOT_HOSTCONF` 指向这个文件
|-- settings.py
|-- urls.py
+-- wsgi.py
hosts.py 内容为:
from django.conf import settings
from django_hosts import patterns, host
host_patterns = patterns('',
host('www', settings.ROOT_URLCONF, name='www'), # `name`与`DEFAULT_HOST` 相同
host('app01', 'app01.urls', name='app01'),
host('app02', 'app02.urls', name='app02'),
)
URL反向映射与模板
URL 反向映射需要额外一个参数作为 主机 :
from django.shortcuts import render
from django_hosts.resolvers import reverse
def homepage(request):
homepage_url = reverse('homepage', host='www') # host可以不传,将会使用 DEFAULT_HOST
user_list_url= reverse('user_list', host='app01')
return render(request, 'homepage.html', {'homepage_url': homepage_url})
模板上的修改:
{% load hosts %}
<a href="{% host_url 'home' host 'www' %}" rel="external nofollow" >Homepage</a>
<a href="{% host_url 'articles' host 'help' %}" rel="external nofollow" >Help Articles</a>
总结
另外,由于域名不同,它们之间存在跨域问题,认证信息并不共享。更多可以查看官方文档:https://django-hosts.readthedocs.io/en/latest/
来源:http://www.hongweipeng.com/index.php/archives/1796/
标签:Django,多站点,多域名
0
投稿
猜你喜欢
PHP字典树(Trie树)定义与实现方法示例
2023-11-15 00:39:50
Go操作redis与redigo的示例解析
2024-04-28 09:12:38
深度解析Python线程和进程
2023-04-19 01:08:16
Python解决爬虫程序卡死问题
2021-04-02 15:34:32
Python类的多重继承问题深入分析
2023-08-13 14:41:17
微信公众平台实现获取用户OpenID的方法
2023-11-17 05:55:56
目标检测mAP的概念及公式详解
2022-05-24 17:55:57
让文本框textarea自动适应内容的高度
2008-07-01 14:44:00
PyQt5 实现字体大小自适应分辨率的方法
2022-08-25 03:07:44
SQL Server可写脚本和编程扩展SSIS包
2009-01-20 16:29:00
golang 执行命令行的实现
2024-04-28 09:14:40
vue项目配置element-ui容易遇到的坑及解决
2024-04-29 13:10:25
抛砖引玉Web2.0设计指南
2008-06-30 12:49:00
python实现图像高斯金字塔的示例代码
2023-05-06 02:02:32
mybatis分页插件pageHelper详解及简单实例
2024-01-19 17:35:25
小型Drupal数据库备份以及大型站点MySQL备份策略分享
2024-01-28 05:32:50
python字符串和常用数据结构知识总结
2023-09-29 21:00:55
CSS滤镜示范(filter)附源代码(静态滤镜)
2008-05-18 12:42:00
Linux中大内存页Oracle数据库优化的方法
2023-07-19 11:24:57
解决Python下imread,imwrite不支持中文的问题
2022-11-15 06:46:23