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

这篇文章主要介绍了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 %} HomepageHelp Articles

总结

另外,由于域名不同,它们之间存在跨域问题,认证信息并不共享。更多可以查看官方文档:https://django-hosts.readthedocs.io/en/latest/

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

以上就是Django 配置多站点多域名的实现步骤的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » python