我已經將多個站點定義爲建議的站點框架文檔。Django站點框架可以在同一個實例上使用多個站點嗎?
據我所知,如果我將運行我的應用程序的多個實例,每個實例都有不同的設置文件(不同的SITE_ID),Django總是知道要使用哪個站點。
我試圖做的是運行一個單一的實例,其中多個網站可用,正確的網站應根據網站的當前網址進行選擇。
站點documentation狀態:
的SITE_ID設置指定與該特定的設置文件相關聯的站點對象 的數據庫ID。如果省略設置 ,get_current_site()函數將嘗試通過將域與Request.get_host()方法中的主機名進行比較來獲取當前網站。
於是,我就從我的settings.py刪除SITE_ID並希望Django的將檢查域查找當前站點如上所述,howewer失敗但下列情況除外:
You're using the Django "sites framework" without having set the SITE_ID setting. Create a site in your database and set the SITE_ID setting or pass a request to Site.objects.get_current() to fix this error.
所以它看起來雖然文檔建議,否則,這個設置是不可忽略的
我明白,使用這樣的網站框架會導致問題,當沒有請求對象可用來找到當前的網站,但這不應該在上下文中是一個問題我的應用程序。
只需檢查應用程序的當前域,是否可以在設置文件中使用站點框架而不對其中的SITE_ID進行硬編碼?
我使用Django版本1.9.9使用Python 3.4.3
是的,我剛剛意識到,當我發佈的問題,謝謝你! – matyas
@matyas這不回答這個問題 - 這是可能的,如果是的話,你需要做些什麼才能使它工作? – YPCrumble
@YPCrumble是的,這是可能的。如果您的設置中沒有定義site_id,則需要有一個requestcontext才能使Sites框架知道當前網站是什麼。 [get_current_site快捷方式的文檔](http://example.com)https://docs.djangoproject.com/en/1.11/ref/contrib/sites/#django.contrib.sites.shortcuts.get_current_site。這個請求必須傳遞給get_current_site函數get_current_site(request),這會給你當前的網站 – matyas