当前位置: 首页 > 面试题库 >

大型Django应用程序布局

漆雕奇逸
2023-03-14
问题内容

我正在一个团队中开发基于Web的大学门户,该门户将基于Django。我们仍处于探索阶段,我正在尝试寻找布局项目/开发环境的最佳方法。

我最初的想法是将系统开发为Django“应用程序”,其中包含子应用程序以分隔出系统的不同部分。我打算制作这些“子”应用程序的原因是,它们在父应用程序之外不会有任何用途,因此单独分发它们毫无意义。我们设想将门户安装在多个位置(例如,在不同的大学中),以便可以将主应用程序放入多个Django项目中进行安装。因此,对于每个位置的项目,我们都有一个不同的存储库,它实际上只是一个settings.py文件,用于定义已安装的门户应用程序,并将urls.pyURL路由到该文件。

我已经开始写一些初始代码,但是遇到了一个问题。处理用户身份验证和配置文件的某些代码似乎没有家。它在概念上不属于门户应用程序,因为它与门户的功能无关。但是,它也不能进入项目存储库-
因为我将在每个位置的存储库上复制代码。例如,如果随后在此代码中发现错误,则必须手动在所有位置的项目文件中复制此修复程序。

我的修复想法是使所有项目库都成为“主”位置项目的分支,以便我可以从该主项目中提取所有更改。我认为这很麻烦,这意味着我还有一个存储库可以照顾。

我正在寻找实现此项目的更好方法。谁能推荐一个解决方案或我可以看的类似示例?问题似乎是我正在开发Django 项目, 而不仅仅是Django 应用程序


问题答案:

我发现最好的方法是创建应用程序,然后创建一个将它们粘合在一起的项目。我的大多数项目都有类似的应用程序,每个应用程序都包含这些应用程序。电子邮件,注释,操作提醒,用户身份验证等。我的首选布局如下:

  • 项目/
    • settings.py
    • urls.py
    • views.py
  • 应用/
    • 电子邮件/
    • urls.py
    • views.py
    • 笔记/
    • urls.py
    • views.py

应用:

每个“应用程序”都独立存在,除了以外settings.py,它们都不依赖项目本身(尽管它可以依赖其他应用程序)。应用程序之一是用户身份验证和管理。它具有用于完成其任务的所有URL
apps/auth/urls.py。它的所有模板都在中apps/auth/templates/auth/。它的所有功能都是独立的,因此当我需要进行调整时,我知道该去哪里。

项目:

project/包含了所有的胶水需要把这些单独的应用程序一起进入决赛的项目。就我而言,我大量使用settings.INSTALLED_APPSinproject/来识别应用程序中哪些视图可供我使用。这样一来,如果我apps.notes退出,即使INSTALLED_APPS没有任何提示,一切仍然可以正常运行。

保养:

这种布局/方法/计划也具有长期的积极影响。您以后可以重用任何应用程序,而几乎无需进行任何工作。您可以从下至上对系统进行测试,确保每个应用程序在集成到整个应用程序之前都能按预期工作,从而帮助您更快地查找/修复错误。您可以实现一项新功能,而无需将其推广到应用程序的现有实例(如果它不在中INSTALLED_APPS,则他们将看不到它)。

我敢肯定,有更好的文档记录方式来布置项目,以及使用更广泛的方式,但这是迄今为止对我最有效的一种方式。



 类似资料:
  • 我正在上传一个大的应用程序(大约250MB)。从家里,它在1个小时左右上传。 上载应用程序时出错。 服务器错误,状态代码:500,错误代码:0,消息: 有什么想法或建议吗?谢谢!

  • 我正在Django上做类似ERP的小项目,其中包含不同的应用程序(产品、销售、采购、会计、MRP、...)。其中一些有依赖关系(例如,销售应用程序需要产品应用程序)。 继承或抽象类似乎也是不合适的,因为我不是试图为子产品创建模型,而是在表中现有信息(条目)的基础上进行增长或扩展。 实现这一点的最佳方法是什么?我应该考虑编写自定义迁移操作吗?否则,还有更好的办法吗?谢谢!

  • 我收到此错误 Unicode解码器位于/select_text'utf-8'编解码器无法解码位置92的字节0xe7:无效的延续字节请求方法:POST请求URL:http://agata.pgie.ufrgs.br/select_text Django版本:2.0.1异常类型:Unicode解码错误异常值:'utf-8'编解码器无法解码位置92的字节0xe7:无效的延续字节异常位置:/home/me

  • 我有一个Django 1.10内置的网站。该网站有3种不同的应用程序:团队、成员和新闻。 第一个叫做团队的应用程序有一个叫做团队的模型。 这是Team/models.py: 第二个应用称为成员,它有一个名为成员的模型。 这是Member/models.py: 我想要的是在成员档案中包含团队的名称,所以我知道它应该是这样的: 但是我不知道在括号里放什么,也不知道如何将团队的模型导入到成员的模型中。我

  • 问题内容: 因此,我在MyApp文件夹中有一个models.py文件: 它可以是大约10-15课。 如何在MyApp中查找所有模型并获取其名称? 由于模型是不可迭代的,因此我什至不知道这是否可行。 问题答案: 对于较新版本的Django,请在下面查看Sjoerd答案 这是完成你想要做的事情的最佳方法: 在此示例中,model是实际模型,因此你可以使用它做很多事情:

  • 问题内容: 我在Django的staticfiles应用程序中遇到了一些问题。 我已经添加了 到我的INSTALLED_APPS并添加了 到我的文件。 我所有的静态文件都位于Mac上的文件夹中。 现在,在我的模板中 正确呈现为。 然而 导致404错误。我正在使用“ runserver”命令作为服务器。 问题答案: 简而言之:STATIC_ROOT仅在调用collectstatic manangem