Django 配置多站点多域名!

作者: 14e61d025165 | 来源:发表于2019-05-17 16:27 被阅读1次

    起步

    要介绍一个非常方便的 Django 扩展包-- django-hosts 。它能够提供在不同的子域名下访问不同的 app。例如,在项目中有多个应用 app01 、 app02 等,希望通过域名 app01.example.com 访问该应用。

    安装与配置Python学习交流群:1004391443,这里有资源共享,技术解答,还有小编从最基础的Python资料到项目实战的学习资料都有整理,希望能帮助你更了解python,学习python。

    使用 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'), # nameDEFAULT_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>

    相关文章

      网友评论

        本文标题:Django 配置多站点多域名!

        本文链接:https://www.haomeiwen.com/subject/wspoaqtx.html