Django 配置多站點(diǎn)多域名的實(shí)現(xiàn)步驟
起步
要介紹一個(gè)非常方便的 Django 擴(kuò)展包-- django-hosts 。它能夠提供在不同的子域名下訪問不同的 app。例如,在項(xiàng)目中有多個(gè)應(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同級(jí)目錄創(chuàng)建 hosts.py 文件:
project_name/ |-- __init__.py |-- hosts.py # `ROOT_HOSTCONF` 指向這個(gè)文件 |-- 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 反向映射需要額外一個(gè)參數(shù)作為 主機(jī) :
from django.shortcuts import render
from django_hosts.resolvers import reverse
def homepage(request):
homepage_url = reverse('homepage', host='www') # host可以不傳,將會(huì)使用 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/
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Sublime如何配置Python3運(yùn)行環(huán)境
這篇文章主要介紹了Sublime如何配置Python3運(yùn)行環(huán)境問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
一文教會(huì)你用python連接并簡(jiǎn)單操作SQLserver數(shù)據(jù)庫
最近要將數(shù)據(jù)寫到數(shù)據(jù)庫里,學(xué)習(xí)了一下如何用Python來操作SQLServer數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關(guān)于用python連接并簡(jiǎn)單操作SQLserver數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下2022-09-09
深入理解python中函數(shù)傳遞參數(shù)是值傳遞還是引用傳遞
這篇文章主要介紹了深入理解python中函數(shù)傳遞參數(shù)是值傳遞還是引用傳遞,涉及具體代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
python中shell執(zhí)行知識(shí)點(diǎn)
在本篇文章里小編給大家分享的是關(guān)于python中shell執(zhí)行知識(shí)點(diǎn)內(nèi)容,需要的朋友們可以學(xué)習(xí)下。2020-05-05
python使用for...else跳出雙層嵌套循環(huán)的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于python使用for...else跳出雙層嵌套循環(huán)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
Python后臺(tái)開發(fā)Django會(huì)話控制的實(shí)現(xiàn)
這篇文章主要介紹了Python后臺(tái)開發(fā)Django會(huì)話控制的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
opencv中顏色空間轉(zhuǎn)換函數(shù)cv2.cvtColor()使用
本文主要介紹了opencv中顏色空間轉(zhuǎn)換函數(shù)cv2.cvtColor()使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
4個(gè)必學(xué)的Python自動(dòng)化技巧分享
在當(dāng)今快節(jié)奏的工作環(huán)境中,自動(dòng)化是提升效率的重要手段,本文將介紹4個(gè)必學(xué)的Python自動(dòng)化技巧,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-12-12

