2013-08-18 38 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。但我同意最简单和最方便的做法是维护通用应用程序并为每个重复使用这些应用程序(并最终覆盖部分应用程序)的客户构建一个项目。

相关问题