gpt4 book ai didi

django:修改/扩展 3rd 方应用程序

转载 作者:行者123 更新时间:2023-12-04 00:31:59 25 4
gpt4 key购买 nike

一个新手django问题

我想使用 3rd 方应用程序,但我需要对其进行一些修改(在这种情况下,该应用程序是 django-registration,我需要更改一些内容,例如允许在没有确认电子邮件的情况下进行注册)

最初,我只是将应用程序安装在通用站点包文件夹中,并在那里更改了代码。现在我将代码放在 bitbucket 上,我需要一种能够以可用的方式将我的 mod 保存在存储库中的方法,并且上传完整的 python 代码听起来不是一个好主意。

我想最好的方法是将 3rd 方应用程序保留在站点包中,并在我的项目中创建一个应用程序以保留我的更改。就我而言,我会在我的项目中创建 my-django-registration,然后在我的代码中需要它时将其导入,而不是 django-registration。

我还阅读了有关 virtualenv 的信息,但我认为这主要用于能够在同一台机器上使用多个环境(事实上,它建议不要更改安装在 virtualenv 中的模块),并且不能帮助我保持我的更改在存储库中。

欢迎任何意见!
谢谢

最佳答案

通常,您应该重用和覆盖 3rd 方应用程序中的行为,而不是修改它们的源。

您最常遇到的是应用程序发布的模型不一定能满足您的需求,但可以完成大部分工作;您将拥有几乎完美的表格,但需要一点点东西;如果你能改变一件事,你就会拥有完美的观点;您将拥有健全的 URL,但您需要从它们那里获得更多信息。

在大多数情况下,这只需要您创建一个自定义应用程序并重新连接所有内容。发送您自己的 URL,这些 URL 映射到您已扩展并覆盖自定义行为方法的 View ;为它提供一个模型表格谁是 Meta正在使用您从原始模型扩展而来的新模型;等等……

这只是您可以做的冰山一角,您的创意还有更多方法。我可以给你一个example我如何使用 RegistrationProfile模型,但提供了我自己的 URL 模式和一个处理注册过程的基于类的自定义 View 。

现在,virtualenv 发挥作用的地方是您很可能会使用 piprequirements file format 中指定和提供所需的依赖项.那时你想说:“我已经扩展了 django-registration 应用程序,但它不能与任何版本一起干净地工作。它必须是版本 X”,或者,“从提交 Y 的存储库中 checkout ”。

关于django:修改/扩展 3rd 方应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8432174/

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