香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

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


时间:2022-04-02 10:36 作者:admin610456


起步

要介绍一个非常方便的 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 settingsfrom django_hosts import patterns, hosthost_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 renderfrom django_hosts.resolvers import reversedef 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/

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)