Django 配置多站點多域名的實現(xiàn)步驟
起步
要介紹一個非常方便的 Django 擴(kuò)展包-- django-hosts 。它能夠提供在不同的子域名下訪問不同的 app。例如,在項目中有多個應(yīng)用 app01 、 app02 等,希望通過域名 app01.example.com 訪問該應(yīng)用。
安裝與配置
使用 pip 進(jìn)行安裝:
pip install django-hosts
把它加入到 INSTALLED_APPS 中:
INSTALLED_APPS = [ ... 'django_hosts', ... ]
在中間件 MIDDLEWARE 的 開頭和結(jié)尾 都添加 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同級目錄創(chuàng)建 hosts.py 文件:
project_name/ |-- __init__.py |-- hosts.py # `ROOT_HOSTCONF` 指向這個文件 |-- settings.py |-- urls.py +-- wsgi.py
hosts.py 內(nèi)容為:
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 反向映射需要額外一個參數(shù)作為 主機(jī) :
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' %}" rel="external nofollow" >Homepage</a>
<a href="{% host_url 'articles' host 'help' %}" rel="external nofollow" >Help Articles</a>
總結(jié)
另外,由于域名不同,它們之間存在跨域問題,認(rèn)證信息并不共享。更多可以查看官方文檔:https://django-hosts.readthedocs.io/en/latest/
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
一文教會你用python連接并簡單操作SQLserver數(shù)據(jù)庫
最近要將數(shù)據(jù)寫到數(shù)據(jù)庫里,學(xué)習(xí)了一下如何用Python來操作SQLServer數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關(guān)于用python連接并簡單操作SQLserver數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下2022-09-09
深入理解python中函數(shù)傳遞參數(shù)是值傳遞還是引用傳遞
這篇文章主要介紹了深入理解python中函數(shù)傳遞參數(shù)是值傳遞還是引用傳遞,涉及具體代碼示例,具有一定參考價值,需要的朋友可以了解下。2017-11-11
python使用for...else跳出雙層嵌套循環(huán)的方法實例
這篇文章主要給大家介紹了關(guān)于python使用for...else跳出雙層嵌套循環(huán)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
Python后臺開發(fā)Django會話控制的實現(xiàn)
這篇文章主要介紹了Python后臺開發(fā)Django會話控制的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
opencv中顏色空間轉(zhuǎn)換函數(shù)cv2.cvtColor()使用
本文主要介紹了opencv中顏色空間轉(zhuǎn)換函數(shù)cv2.cvtColor()使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05

