Django 配置多站点多域名

栏目: Python · 发布时间: 4年前

内容简介:要介绍一个非常方便的 Django 扩展包--使用 pip 进行安装:把它加入到

起步

要介绍一个非常方便的 Django 扩展包-- django-hosts 。它能够提供在不同的子域名下访问不同的 app。例如,在项目中有多个应用 app01app02 等,希望通过域名 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>

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

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Software Engineering for Internet Applications

Software Engineering for Internet Applications

Eve Andersson、Philip Greenspun、Andrew Grumet / The MIT Press / 2006-03-06 / USD 35.00

After completing this self-contained course on server-based Internet applications software, students who start with only the knowledge of how to write and debug a computer program will have learned ho......一起来看看 《Software Engineering for Internet Applications》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试