Django 配置多站点多域名的实现步骤
作者:栖迟於一丘 发布时间:2022-05-23 23:53:46
标签:Django,多站点,多域名
起步
要介绍一个非常方便的 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/
0
投稿
猜你喜欢
- 特点:不需要另外加个清除DIV:after(伪对象)--设置在对象后发生的内容,通常和content配合使用,IE不支持此伪对象,非Ie 浏
- Python画图主要用到matplotlib这个库。Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的
- Pandas之drop_duplicates:去除重复项方法DataFrame.drop_duplicates(subset=None, k
- 实验环境:windows 7,anaconda 3(Python 3.5),tensorflow(gpu/cpu)函数介绍:标准化处理可以使
- 模型事件Laravel 模型事件允许你监听模型生命周期内的事件, 并且通过这个事件去做一些模型通用性的东西, 例如检查用户修改了那个字段,
- 本文实例讲述了python简单实现基数排序算法。分享给大家供大家参考。具体实现方法如下:from random import randint
- Pygame的mixer 模块可以依据命令播放一个或多个声音,并且也可以将这些声音混合在一起。而获得声音需要四个步骤:一、启动mixer进程
- 之前需要做一些目标检测的训练,需要自己采集一些数据集,写了一个小demo来实现图片的采集使用方法:指定name的名称,name为分类的标签按
- 第五个页面name="changenick.php" <? include &q
- 1. 规范简介本规范主要规定ASP源程序在书写过程中所应遵循的规则及注意事项。编写该规范的目的是使项目开发人员的源代码书写习惯保持一致。这样
- 使用破解补丁方法虽然麻烦,但是可用激活到2099年,基本上是永久激活了,毕竟在座各位能活到这个年份也是寥寥无几了吧!!步骤一、下载破解补丁,
- 本文实例讲述了Go语言生成随机数的方法。分享给大家供大家参考。具体实现方法如下:golang生成随机数可以使用math/rand包packa
- PHP registerXPathNamespace() 函数实例为下一个 XPath 查询创建命名空间上下文:<?php $xml=
- 本文实例讲述了Python爬虫爬取杭州24时温度并展示操作。分享给大家供大家参考,具体如下:散点图 爬虫杭州今日24时温度 https://
- 正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自
- 动机: 排序功能让我们页面上的数据显的更人性化,是我们在网站上见过的很普遍的一个功能效果了。以往的自动排序都是用大量的脚本代码来完成的,对一
- 遇到一个难题,在无物理键盘情况下,通过页面软键盘在页面文本框输入汉字,不知道51js的各位大牛有没有遇到过这种需求,如果遇到过是如何解决的,
- 首先,来看每次处理一个字符的情况,可以有如下方法去实现:方法一: >>> a='
- 本文实例为大家分享了python实现五子棋游戏的具体代码,供大家参考,具体内容如下一、运行截图:二、代码# 用数组定义一个棋盘,棋盘大小为
- numpy norm()函数求范数函数:norm(x, ord = None, axis = None, keepdims = False)