内容简介:要介绍一个非常方便的 Django 扩展包--使用 pip 进行安装:把它加入到
起步
要介绍一个非常方便的 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' %}">Homepage</a> <a href="{% host_url 'articles' host 'help' %}">Help Articles</a>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- nginx下多域名配置示例
- YurunOAuthLogin v1.2.4 新增第三方登录多域名解决方案
- 在容器中利用Nginx-proxy实现多域名的自动反向代理、免费SSL证书
- 6、如何获取配置中心的配置
- React降级配置及Ant Design配置
- vscode 配置eslint 开发vue的相关配置
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。