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/中完成所有操作,但我在/foo/foo/等内部编辑urls.py

我一直在关注 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 真正应该使用的方式吗?还是我完全偏离了轨道,做错了事情,而这一段没有任何姜戈意义

我对此比较陌生。我以前一直在使用 PHP,尽管 Django 在基本掌握方面很痛苦,但我并不后悔,并计划弃用我迄今为止创建的任何 PHP 项目并将其离线化,并将它们全部替换为 django。好吧 - 它有意义并且不是一个单一用途的网站。不仅因为 Django 很棒且用途广泛,而且我也可以轻松扩展它......

所以。。。我应该如何真正设计 Django 项目、应用程序,以及如何在生产中使用它们,将它们提供给多个客户?

谢谢!

我的意思是 - 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"),
)

你猜对了,这是一个非常基本的网站。

并完全在/foo/shop/中执行所有操作,但我在/foo/foo/等中编辑 urls.py。

我一直在关注Django Book,但我已经开始获得那种奇怪的东西 感觉/foo/foo/只是为了一个主文件夹"缝合的东西 在一起",但个别的事情应该只在/foo/shop/中完成,但是 不限于。最好在/foo/web/,/foo/products/,/foo/forum/, /foo/controlpanel/

,/foo/shop/,/foo/helpdesk/,/foo/backoffice/etc.

好吧,您应该定义/foo/shop/urls.py,并将其从/foo/foo/urls.py导入,即:

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

关键是让你的应用程序更方便地在其他 django 项目中重用。

这是对的吗?我应该把所有与产品相关的东西都放进去吗 /foo/products/,包括存储管理、运输、经销商、 价格等,然后把这些产品的管理(从员工那里 side( 到/foo/backoffice/,这将作为某种 "django.contrib.admin"为此?这是对的吗?

你应该看看开源项目,看看他们是如何划分的。

根据您代表的目录树,您似乎已经理解了这一点,但是您的陈述似乎很模糊,因此我将尝试澄清它。

应用通常以模型为导向。因此,如果我制作一个product应用程序,它可能包含:

  • 产品模型,
  • 产品列表、编辑、创建、删除和详细信息视图
  • 视图的网址,
  • 产品管理员,
  • 产品和视图的测试,
  • 其他 Django 应用程序(如 product/admin.py(使用的其他东西将由 Django.contrib.admin 使用,但像 Django-autocomplete-light 这样的外部应用程序将使用product/autcomplete_light_registry.py,Django-rules-light 将使用product/rules_light_registry

然后,如果我想托管此的多个实例(完全 单独的数据库和东西(对于多个客户,我应该只 创建一个准系统项目,将这些东西放在一起,以 配置设置,然后只需将单个组件移入 某种中央存储库,并通过以下方式在项目中调用它们 INSTALLED_APPS?

有很多方法可以用django做SaaS。但我同意,最简单和最方便的是维护通用应用程序,并为每个客户构建一个项目,以重用(并最终覆盖部分(这些应用程序。

相关内容

  • 没有找到相关文章

最新更新