1

编辑:我是这个网站的新手,但如果你要对我投反对票,你能解释一下原因吗?我搜索了谷歌、这个网站和其他网站,但没有找到任何有意义的东西,我认为这是一个可以提问和寻求帮助的网站。

我有一个自定义 PHP 论坛,我正在尝试将其转换为 Python/Django 作为学习经验,但我遇到了一些问题。我一直在阅读 Django,我们鼓励我们将应用程序拆分为多个应用程序。我浏览了 6 部分教程和文档的许多其他部分,但还有一些问题。

假设我有大约 30 张桌子。

基本论坛的表,例如:posts_index、posts、users、user_groups、user_activity、user_sessions、forums、payment_gateways、payment_logs 等

我在构建模型时遇到问题。使用 PHP,我只需要 index.php、/admin/index.php、view_forum.php、view_thread.php 和其他一些,一切都可以直接从数据库中提取,我没有任何问题,但现在我必须处理应用程序/模块。

我想我需要以类似于以下方式构建我的应用程序:

/admin/ app
/forums/ app
/view_forum/ app
/view_thread/ app
/forums/view_forum/ app (instead of just /view_forum/, could be a sub app)
/forums/view_thread/ app (instead of /view_thread/, could be a sub app)

我的问题也是唯一的问题是处理全局状态。例如,用户/组/会话/日志记录/权限信息将需要通过导入其他应用程序模型文件在多个应用程序之间共享。为此,我需要参考他们的模型信息,正确的处理方法是什么?

这些中的任何一个都可以接受吗?

  1. 创建大量不同的应用程序,例如 /users/ 它将为我的 users_groups、users、user_sessions 建模,另一个 /posts/ 应用程序将包括 posts_index 的模型、论坛等,这些模型存在但实际上并未公开使用,它们只会在其他应用程序中使用。它们将被导入到 /view_forum/ 应用程序等区域,因为在查看论坛时,我可能需要确定用户是否已登录、是否是特定组的成员等,因此需要访问许多隐藏的应用程序,因此将从隐藏的应用程序中导入。

  2. 如果我只有一个应用程序,而不是一个应用程序,它只是我的整个项目。这对我来说听起来像是最好的解决方案,但如果我们不能将整个应用程序总结成一个需要分解的句子,这似乎是建议的。如果我将一个应用程序用作整个项目,我的模型文件将有 30 多个不同的模型,这可以接受吗?我假设不是,但我想我会问。

以上任何一个都有意义吗?如果不是,你会怎么解决?我承认我迷路了,所以任何反馈都意味着很多。

我是 Python/Django 的新手,正在努力解决问题。我希望我清楚我想要做什么。我非常欢迎任何建议。我一直在尝试解决问题,但我认为向更有经验的开发人员寻求建议会更好。我不是专业的程序员,还在学习,所以请善待:)。

4

2 回答 2

1

我对此投了赞成票...当我第一次搬到 Django(也来自 PHP)时,我也有类似的问题

尽量不要根据数据库表(或 url 路径)来考虑应用程序,您希望为独立的功能块创建应用程序。

我会说您的大部分代码将在一个forum应用程序中,其中包含Forum模型Post和所有与论坛相关的 url,如/view_forum//view_thread/. 请注意,Django 中并没有真正的子应用程序……这些是不同的视图,它们都属于单个应用程序中的一组相关功能。

'用户'的东西......你通常想要连接到 Django 身份验证系统(https://docs.djangoproject.com/en/dev/topics/auth/default/#user-objects),但如果你正在尝试要保留遗留数据库结构,这可能会更难......您最终可能需要自己的users应用程序。

支付网关的东西听起来又像另一个应用程序。

对于管理员,您可以(几乎)免费使用 Django:
https
://docs.djangoproject.com/en/1.5/ref/contrib/admin/ 您需要admin.py在每个应用程序内部注册所需的模型暴露给管理站点。

您可能会发现最好遵循教程并构建一个简单的博客(或尝试从头开始构建一个非常简单的最小论坛),以便在重新编写之前对 Django 有所了解。因为尝试使用遗留数据库表完全重新创建旧功能会有点困难,并且可能会导致您进入不是“好 Django”的模式。

您可能还会发现查看现有 Django 论坛应用程序的源代码很有用,例如:
https
://bitbucket.org/slav0nic/djangobb/src/ 他们只有一个djangobb_forum应用程序可以完成所有工作。我认为这是完全合理的,因为论坛是一个复杂的功能。

请注意他们的Profile模型如何auth.User通过OneToOneField. 这样可以更轻松地与内置的登录和身份验证系统集成。

于 2013-06-14T23:37:29.063 回答
0

首先集成您的旧数据库,然后构建管理站点。您将看到模型信息如何可用于 Admin 应用程序和您编写的每个其他应用程序。关键是import models在您的应用程序中。

于 2013-06-14T23:27:11.060 回答