2013-08-18 70 views
0

django項目和個人應用程序的真正含義是什麼?django項目和個人應用程序在其中的真正意義

我的意思是 - AFAIK你不能創建一個項目,並完全生活在你創建的項目中,你必須在該項目中創建一個應用程序,以便能夠在django中實際執行某些操作。 如果我錯了,請糾正我。

現在真的應該是django項目的結構?我正在寫一個電子商店。比方說,我的項目被命名爲foo

/foo 
    /foo 
     /settings.py 
     /templates 
     /urls.py 
     /wsgi.py 
    /shop 
     /__init__.py 
     /admin.py 
     /models.py 
     /tests.py 
     /views.py 

,並完全在/foo/shop/做的一切,但我編輯urls.py/foo/foo/

我是繼Django Book,但我已經開始獲得這種奇怪的感覺那/foo/foo/只是一個主要文件夾「拼接在一起」,但個別的東西只應在/foo/shop/,但不限於。最好是在/foo/web//foo/products//foo/forum//foo/controlpanel//foo/shop//foo/helpdesk//foo/backoffice/

是正確的嗎?我是否應該把與/foo/products/有關的所有產品都包含在內,包括存儲管理,運輸,經銷商,價格等,然後將這些產品的管理(從員工方面)放到/foo/backoffice/,這將作爲某種「django.contrib.admin」 ?那是對的嗎?然後,如果我想爲多個客戶託管多個此實例(具有完全獨立的數據庫和內容),那麼我應該只創建一個準系統項目,這會將這些內容放在一起,配置設置,然後僅移動某些組件的中央儲存庫,並通過INSTALLED_APPS在項目中回覆它們?因爲那太酷了!我的意思是 - 在全球範圍內進行所有更改,而不是觸及用戶數據和配置,除非必要(在模型中添加列等)。這是如何django真的應該被使用?還是我完全偏離軌道,做事全是錯了,本款只是不作任何django-sense

我對此比較陌生。我之前一直在使用PHP,儘管Django是一個非常痛苦的人,但我並不後悔,並且計劃放棄並使我創建的PHP項目脫機並全部替換它們與Django。那麼 - 它是有道理的,而不是一個單一目的的網站。不僅因爲Django非常好用,而且我可以很容易地擴展它......

那麼......我應該如何真正設計Django項目,應用程序以及如何在生產中使用它們,將它們提供給多個客戶?

謝謝!

回答

4

我的意思是 - AFAIK你不能創建一個項目,並完全在你創建的項目中生活,你必須在該項目中創建一個應用程序,以便能夠在django中實際執行某些操作。如果我錯了,請糾正我。

你可以在一個項目上做很多事情,但是你需要一個應用程序來自動發現模型。

例如,我有一個項目,只有這個在urls。py:

class Homepage(generic.TemplateView): 
    template_name = 'homepage.html' 

    def get_context_data(self): 
     context = cache.get('homepage') 

     if not context: 
      management.call_command('reset_cache') 
      context = cache.get('homepage') 

     return context 


urlpatterns = patterns("", 
    url(r"^$", Homepage.as_view(), name="home"), 
) 

你猜對了,這是一個really basic website

,並盡一切完全是在/富/店/,但我裏面編輯urls.py /富/富/等

我是繼Django的書,但我已經開始獲得該奇怪的 感覺/ foo/foo /只是針對一個主文件夾「將 拼接在一起」,但是單獨的東西只應在/ foo/shop /中完成,而 不限於此。最好在/ foo/web /,/ foo/products /,/ foo/forum /中, /foo/controlpanel /,/ foo/shop /,/ foo/helpdesk /,/ foo/backoffice /等。

那麼,你應該定義/foo/shop/urls.py,並從/foo/foo/urls.py即:

urlpatterns = patterns("", 
    url(r"^shop/", include("shop.urls")), 
) 

的一點是,使您的應用更方便在其他的Django項目重用導入。

這是正確的嗎?我應該把所有與產品相關的產品放在 /foo/products /中,包括存儲管理,運輸,經銷商, 價格等,然後把這些產品的管理(從員工 一側)放到/ foo/backoffice /中將作爲某種 「django.contrib.admin」爲此?那是對的嗎?

你應該看看open source projects,看看他們是如何分開的。

根據您所代表的目錄樹,您似乎已經理解了這一點,但您的陳述似乎很模糊,所以我會嘗試澄清它。

應用程序通常以模型爲導向。所以,如果我做一個product應用它可能會包含:

  • 產品型號,
  • 產品列表,編輯,創建,刪除和詳細視圖
  • 網址的意見,
  • 產品管理,
  • 試驗產品和看法,
  • 其他的東西。它們被其他Django的應用程序,如product/admin.py將由django.contrib.admin使用,也可外接應用程序,如Django的自動完成光會用product/autcomplete_light_registry.py和Django的規則,光會用product/rules_light_registry

然後,如果我想舉辦這樣的多個實例(具有完全 單獨的數據庫之類的東西),爲多個客戶,我應該只 創建一個準系統項目,這將把這些東西放在一起,到 配置設置,然後只移動 某個中央存儲庫中的各個組件,並通過 INSTALLED_APPS在項目中回撥它們?

還有很多方式做django的SaaS。但我同意最簡單和最方便的做法是維護通用應用程序併爲每個重複使用這些應用程序(並最終覆蓋部分應用程序)的客戶構建一個項目。

相關問題