gpt4 book ai didi

Django 和项目/应用程序组织

转载 作者:行者123 更新时间:2023-12-04 00:45:44 26 4
gpt4 key购买 nike

我刚刚开始学习 Django,对布局和组织项目和应用程序的最佳方式有点困惑。根据我的理解,一个项目是您的整个站点,而应用程序是构成该站点的部分?

对于第一个项目,我正在制作一个小型电子商务类型的网站,其中包含用户、项目等......那么我应该有“用户”和“项目”应用程序吗?那些与用户注册/登录、项目标签、项目评论等相关的较小部分呢?用户身份验证、标记和评论是否也应该是单独的应用程序?

基本上,我很难理解应用程序是什么以及何时将不同的用例分成单独的应用程序,同时保持一切可管理和干燥的概念。

最佳答案

Ignacio 正确地指出您提到的一些应用程序已经存在。您还应该查看 Pinax 之类的项目对于其他可作为您自己项目起点的可插拔应用程序。

现在回答你的问题:一个 Django 项目是 Django 应用程序的集合——这部分你做对了。 Django book更好地定义它:

"A project is a collection of settings for an instance of Django, including database configuration, Django-specific options and application-specific settings."



django book defines a Django app作为:

"A bundle of Django code, including models and views, that lives together in a single Python package and represents a full Django application."



但是在最近的 Jacob Kaplan-Moss 的类(class)中我理解(请注意,我不是说那是他所说的!!!) 一个 Django 应用程序就是封装常见的定义良好的行为 .我也明白了 有很多小应用程序是可以的 - 比拥有一个可以做所有事情的单一应用程序更好 - 有些应用程序只是提供模板,有些只是模型,有些是模板、模型和 View 的完整集合。

我的大多数项目——我们公司面向内部的应用程序——都有一个内部开发的通用可插拔应用程序,它几乎是模板、css、javascript 等的集合;以共同的外观和感觉将项目联系在一起。我在那个可插入的应用程序中没有 View 或模型。

我有一个可插入的应用程序,也是内部开发的,其中包含在多个项目之间共享的一堆模型。这些模型表示由多个不同应用程序使用的通用数据库表,并且在每个应用程序中复制它们将 violate DRY .

一些很好的应用示例:
  • 身份验证(Django 已经有一个标准的身份验证应用程序)
  • gravatar 支持(Pinax 有)
  • 标记(有几个选项可用,Pinax 有一个)
  • 帮助台(我们内部开发了一个)

  • 以上所有内容都在解决一个逻辑问题。他们不试图成为一个全能的解决方案...... Gravatar 应用程序不提供 OpenID 支持(OpenID 有另一个应用程序),我的帮助台内部应用程序不提供身份验证(它使用默认的 django应用程序)。

    一个 Django 应用程序的坏例子是实现身份验证、openid 支持、帮助台和项目跟踪的应用程序。为什么会很糟糕?因为现在如果你想重用你的身份验证应用程序,你必须从你的包罗万象的应用程序中提取一些模型、一些 View 、一些模板。如果您决定下一个项目必须支持 OpenId,您将必须仔细阅读这个应用程序庞然大物的代码并找出相关的部分。

    一个好的 Django 应用程序提供了一组逻辑操作并且做得很好。

    关于Django 和项目/应用程序组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2472984/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com