如何将django项目划分为应用程序

2024-03-12

我想知道如何将具有层次结构的项目划分为应用程序。假设我正在尝试构建类似 github.com 的东西。

在 github.com 中,一个帐户有一些存储库,其中包含一些功能,例如代码、问题或拉取请求。这些功能引用了其他功能。在这种情况下,哪个是应用程序,哪个不是?那我应该把应用程序放在根目录下还是作为子应用程序放在一个应用程序目录下呢?


在理想的世界中,每个应用程序都将独立于其他应用程序,或者仅与其他应用程序松散耦合。但在许多现实世界的情况下,往往存在如此相互依赖的情况,以至于几乎不值得尝试将它们抽象化。

因此,在这种情况下......将它们分开的最佳方法是将它们划分为功能组,其中每个应用程序中的大多数视图、模型等仅在应用程序内使用。因此,考虑到您的 github 示例,“问题”可能是他们自己的应用程序。这issues应用程序将具有仅与显示、编辑和服务(ajax 请求等)问题相关的特定视图、用于存储问题及其持续状态的模型、仅负责呈现问题视图的模板、问题条目(例如,每个用户的问题) 、每个项目的问题、特定问题的详细信息。实际上有很多特定于问题的代码。

是的,当你完成时,你将拥有从这些问题模型到用户模型的外键,也许还有一个提交模型、一个项目模型……许多相互依赖关系会阻止issues应用程序在没有其他应用程序存在的情况下工作。但从逻辑上讲,当需要处理问题系统时,您会知道该去哪里..因为所有问题代码都在一个地方。所有默认问题设置都在issues/settings.py例如,所有主要与问题相关的表都将带有前缀app_label eg. issues_issue, issues_comment.. etc..

所以基本上,尝试在核心功能的基础上分解它,并最小化依赖项的数量..或者至少,尝试避免循环依赖项..例如,某些应用程序将有许多其他应用程序依赖于它们,有些应用程序将有没有任何。尽量避免致命的拥抱。但最终,依赖关系将会发生。

在某些情况下,您可能能够实现可选的依赖关系,例如......当应用程序 A、Model_A 中发生某些情况时,它应该触发应用程序 B、Model_B 中发生的情况......但前提是安装了应用程序 B。有一些方法可以实现这种不太紧密耦合的行为,例如 Django 的信号系统

https://docs.djangoproject.com/en/2.0/ref/signals/ https://docs.djangoproject.com/en/2.0/ref/signals/

但这不像外键那么可靠,因此不要特意松散地耦合永远不会解耦的事物。

尝试根据紧密耦合的功能将事物划分为应用程序,例如。与其他视图相关的视图。将所有应用程序所依赖的东西放入主应用程序或库中......您会发现随着代码的增长,它更容易维护。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将django项目划分为应用程序 的相关文章

  • Heroku 与 django 通道的正确 procfile/要求是什么?

    tl dr django 频道应用程序在本地使用 manage py runserver 运行 但不在 heroku 上运行 我是 django 通道的新手 尝试使用 heroku 通道部署一个非常基本的 django 应用程序 我最初使用
  • TEST 镜像默认数据库但没有数据

    我正在尝试对我的 Django 应用程序进行一些测试 我使用了数据库镜像作为测试数据库 当我尝试运行一些测试时 默认数据库 中的数据似乎在镜像测试数据库中不可用 default sqlite ENGINE django db backend
  • Django 在 rss feed 中指定频道图像的方式

    在 rss feed 中指定频道图像的 django way 是什么 我可以通过滚动我自己的 xml 来手动完成此操作 但我正在寻找一种正确的方法来完成此操作 Editdobrych 的解决方案在这里不太适用 因为我具体询问的是 RSS 而
  • 将 transaction.commit_manually() 升级到 Django > 1.6

    我继承了为 Django 1 4 编写的应用程序的一些代码 我们需要更新代码库以使用 Django 1 7 并最终更新到 1 8 作为下一个长期支持版本 在一些地方它使用旧风格 transaction commit manually and
  • Django - 提交具有同一字段多个输入的表单

    预警 我对 Django 以及一般的 Web 开发 非常陌生 我使用 Django 托管一个基于 Web 的 UI 该 UI 将从简短的调查中获取用户输入 通过我用 Python 开发的一些分析来提供输入 然后在 UI 中呈现这些分析的可视
  • Django Rest Framework 删除 csrf

    我知道有关于 Django Rest Framework 的答案 但我找不到解决我的问题的方法 我有一个具有身份验证和一些功能的应用程序 我向其中添加了一个新应用程序 它使用 Django Rest Framework 我只想在这个应用程序
  • Django:使用条件 {% extends %} 使 {% block "div" %} 成为条件

    我想分享一个 AJAX 和常规 HTTP 调用之间的模板 唯一的区别是一个模板需要扩展 base html html 而另一个则不需要 我可以用 extends request is ajax yesno app base ajax htm
  • Heroku 上的 Django 翻译无法完全正常工作

    我在 Heroku 上部署了 Django 应用程序 并添加了https github com piotras heroku buildpack gettext git此 ugettext 构建包和应用程序的某些部分已注释翻译 本地可以用
  • 如何处理 Django 中的错误

    我想让我的 django 应用程序尽可能对用户友好 并且我想处理适当的错误并让它推出类似于 javascript 中的警报的错误消息 我想在没有上传文件时执行此操作 因此 当按下上传按钮并且尚未上传任何内容时 将会发出一条警报消息 我的看法
  • 如何从 Django 管理界面禁用“最近操作”小部件?

    我不想展示最近的操作小部件在 django 管理站点中 我不知道如何完成此操作 你可以覆盖admin index html禁用显示的模板 有 您可能想要更改 删除的侧边栏块 有条件地启用或禁用操作 ModelAdmin get action
  • 带有用户信息的 Django Logger

    我只是好奇 是否可以放User内的信息formatters信息输入LOGGING配置在setting py 现在我只是将该信息放入要记录的消息中 但也许有一种方法可以将其设置为formatters争论 这是我的LOGGING现在的配置 LO
  • Django 模型:默认日期时间未转换为 SQL CURRENT_TIMESTAMP

    我正在使用 Django 模型创建 PostgreSQL DB 我有一个 DateTimeField 我想将当前时间戳设置为默认值 我知道有多个消息来源建议如何做到这一点 但是 当我在 Django 之外检查数据库时 默认时间戳不会显示 我
  • JQuery:将 FormData 和 csrf 令牌一起发布

    Is the data 下面的行正确吗 我想将表单数据和 csrf 令牌发布到 Django 视图函数 file upload on change function var currentpath window location pathn
  • 如何在 django 中使用单个提交按钮提交多个表单?

    我已经成功使用 modelformset factory 创建了我需要的表单 avaluos Avaluo objects filter Estatus contains CONCLUIDO Factura isnull True Fact
  • 如何使用 Django HttpResponseRedirect 提供规范 URL?

    这个问题和我刚才问的很相似href 我可以获取 Google 搜索结果来使用 显示最终重定向网址吗 https stackoverflow com questions 22728433 href can i get google searc
  • 更新到 Django 1.8 - AttributeError: django.test.TestCase 没有属性 'cls_atomics'

    我将 Django 1 7 项目更新为 Django 1 8 现在运行测试时出现错误 它们是 Django 的子类 django test TestCase Traceback most recent call last File env
  • django-autocompletion-light 简单外键完成显示不可编辑的下拉小部件

    我有一个国家模型 class Country models Model name models CharField max length 200 def str self return self name 这是由 UserDetails 模
  • 巩固 Django 南迁移

    在我的项目的初始阶段 我对模型进行了很多更改 因此我最终为我的应用程序生成了很多向南迁移 在转到我的生产服务器执行迁移之前 是否可以以任何方式整合它们 这样我就不会为每个应用程序进行一百万次迁移 如果是这样 我该怎么做呢 您始终可以删除现有
  • 用于基于类的通用视图的 Django mixin

    我正在尝试实现 Staff member required mixins 以下是我发现的两种方法 First class StaffRequiredMixin object method decorator login required d
  • 在 django 中自定义项目和应用程序模板

    我想自定义运行时创建的文件和文件夹 python manage py startapp appname 我发现一遍又一遍地做一些事情 我认为如果在创建新应用程序时存在我的自定义功能 那就太好了 您知道创建应用程序时可以在哪里自定义默认文件吗

随机推荐