2010-11-05 83 views
2

我在多站點和多主機Django上看到了各種問題,包括每個子域的子域和特定模式。我沒有看到的是解決方案(或技巧,所以我可以編碼)解決這個問題。Django上的多個PostgreSQL模式和子域名用戶

  1. 我在網站上使用Django + PostgreSQL的,比方說myapp.com
  2. 主要場地myapp.com用於公司註冊
  3. 註冊公司都有自己的子域名,company.myapp .com,並從那裏登錄並開始工作。

我的想法是通過在PostgreSQL中創建2個初始模式。

  1. 模式「權威性」爲企業和用戶
  2. 模式「empty_company_template」與一個公司的基本表,一切空,但掛在正確的序列等

當一個新公司寄存器,我希望這種情況發生:

  1. 爲公司創造了新的模式,從empty_company_template派生
  2. 鉻eate一個新的數據庫用戶的公司,取名公司(公司名稱)
  3. 設置搜索路徑爲此新用戶到公司,AUTH(沒有進入empty_company_template,給其他用戶模式的無法訪問)

對我來說,這似乎比現有的解決方案更好,這些解決方案似乎都依賴於整個應用程序的單個數據庫用戶(可訪問所有方案)。但是,我努力使這個工作。這確實是一種可行的方法嗎?任何人都可以將我指向正確的方向嗎?這是Django,或許它已經完成了,我只是沒有找到它?

回答

3

我有一個工作解決方案,可以完成除單獨用戶以外的任何操作。

它是確定子域的一小塊中間件(只是process_request),並對數據庫執行SET search_path查詢。現在對我來說已經夠好了。

任何對代碼感興趣的人,請聯繫我。我會在最終決定時將它發佈到某個地方。

編輯2010年12月22日:

我發表在我的博客的代碼在 http://blog.dyve.net/django-subdomains-and-postgresql-schemas

+0

我很想知道這個解決方案是否仍然適用於你。如果您決定轉向其他方面,請更新。 – 2012-09-26 00:15:17

0

如果你想擁有單獨的數據庫用戶,你可能需要單獨的Django實例,否則不會有安全性的增益。這個模型將需要更復雜的流程管理。我認爲你不會爲這樣的應用程序找到現成的解決方案,所以你很可能不得不推出自己的應用程序。否則,如果您不願意投入太多時間,請堅持使用整個應用程序方法的一位用戶。

+0

我的工作出來的東西我自己,我希望能證明你錯了:-) – dyve 2010-11-22 07:10:15

+0

我喜歡被證明錯誤:)(雖然本身沒有錯) – 2010-11-24 07:13:59