Mezzanine有提供一個方便的功能, 能夠讓一個DB與一份Mezzanine,能夠實現兩個不同的站, 可以在同一個admin url做管理.
MULTI-TENANCY
The “sites” framework
只需選擇右上即可做切換.
但是此時你會發現, 你一切換, 另外一個SITE的頁面也換了, 這樣就很蛋疼了, 一切都是Domain問題, 以下進行介紹.
(1) 首先進入admin後台, 會發現有SITE, 可以手動增加.
注意: 必須Domain Name必須要與你的Domain Name相同, 如此才有區分Site的效果
如圖所示, 我是使用ngork創造一個url, mock到我的http://localhost:8000
ngrok也很簡單, 基本上只要註冊登入, 按照第一頁顯示的操作即可, 如圖:
(2) 修改setting.py
將你的要啟動的Site, 選擇正確的SiteId, 並在啟動使, 指定你要用的setting.py
如果你不知道正確的SITEID, 可以進DB看, 或者按F12看.
我就是另外新增一個setting_site2.py, 當作是另外一個站台的setting.
由於local_setting.py的值, 當你runserver時, 最後會覆蓋setting.py, 因此這裡的AllowHost也要修改為*, 否則將得到:
Invalid HTTP_HOST header: 'XXX.XXX.XXX.XXX:8000'. You may need to add u'XXX.XXX.XXX.XXX' to ALLOWED_HOSTS.
(4)啟動
最後, 執行
``` python manage.py runserver 127.0.0.1:8000
--settings=investblog.settings_local python manage.py runserver 127.0.0.1:8001 --settings=investblog.settings_site2 ```
你應該就可以得到兩個Site了!.
註: 由於我希望兩個頁面的首頁不同, 所以我修改了url.py其中一段
```
if settings.SITE_ID == 2:
urlpatterns += [
url("^$", direct_to_template, {"template": "index2.html"}, name="home"),
url("^", include("mezzanine.urls")),
]
elif settings.SITE_ID == 1:
urlpatterns += [
url("^$", direct_to_template, {"template": "index.html"}, name="home"),
url("^", include("mezzanine.urls")),
]
```
參考來源:
https://dashboard.ngrok.com/get-started/setup https://stackoverflow.com/questions/25468676/django-sites-model-what-is-and-why-is-site-id-1 https://stackoverflow.com/questions/40667519/why-is-django-throwing-error-disallowedhost-at https://www.pythonanywhere.com/forums/topic/9655/ https://stackoverflow.com/questions/25793758/django-specifying-url-in-runserver https://stackoverflow.com/questions/44298839/django-redirects-different-links-to-same-page https://stackoverflow.com/questions/30574074/django-how-to-create-duplicate-apps-without-duplicating-the-code-models-sign
Mezzanine
SQL Server Analytics Service 1
SEO(1) Github(2) Title Tag(2) ML(1) 李宏毅(1) SQL Server(18) Tempdb(1) SSMS(1) Windows(1) 自我成長(2) Excel(1) python Flask(1) python(5) Flask(2)
Max Chen (159)