服务器之家

服务器之家 > 正文

Django 配置多站点多域名的实现步骤

时间:2021-06-27 00:38     来源/作者:栖迟於一丘

起步

要介绍一个非常方便的 django 扩展包-- django-hosts 。它能够提供在不同的子域名下访问不同的 app。例如,在项目中有多个应用 app01 、 app02 等,希望通过域名 app01.example.com 访问该应用。

安装与配置

使用 pip 进行安装:

?
1
pip install django-hosts

把它加入到 installed_apps 中:

?
1
2
3
4
5
installed_apps = [
  ...
  'django_hosts',
  ...
]

在中间件 middleware 的 开头和结尾 都添加 hostsresponsemiddleware :

?
1
2
3
4
5
6
7
middleware = [
  'django_hosts.middleware.hostsrequestmiddleware', # 头尾都要加
 
  ...
 
  'django_hosts.middleware.hostsresponsemiddleware',
]

在 settings.py 添加配置变量:

?
1
2
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 文件:

?
1
2
3
4
5
6
project_name/
 |-- __init__.py
 |-- hosts.py # `root_hostconf` 指向这个文件
 |-- settings.py
 |-- urls.py
 +-- wsgi.py

hosts.py 内容为:

?
1
2
3
4
5
6
7
8
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 反向映射需要额外一个参数作为 主机 :

?
1
2
3
4
5
6
7
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})

模板上的修改:

?
1
2
3
4
{% 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/

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021德云社封箱演出完整版 2021年德云社封箱演出在线看
2021德云社封箱演出完整版 2021年德云社封箱演出在线看 2021-03-15
返回顶部