我只是想尝试用Django构建一个项目。因此,我有一个(基本的)问题,关于如何管理这样的项目。由于我找不到任何指南或者如何将一个项目拆分成应用程序的信息。
以SO为例。你会使用哪些应用程序?我认为应该有“用户”和“问题”这两个应用程序。但是如果有一个话题系统,其中包含静态文章,也可以接受投票呢?那么如何构建应用程序结构呢?是为“问题”,“投票”和“话题”各建立一个应用程序,还是只建立一个名为“内容”的应用程序?
我不知道该怎么做。也许是因为我对Django还不够了解,但我很感兴趣...
我只是想尝试用Django构建一个项目。因此,我有一个(基本的)问题,关于如何管理这样的项目。由于我找不到任何指南或者如何将一个项目拆分成应用程序的信息。
以SO为例。你会使用哪些应用程序?我认为应该有“用户”和“问题”这两个应用程序。但是如果有一个话题系统,其中包含静态文章,也可以接受投票呢?那么如何构建应用程序结构呢?是为“问题”,“投票”和“话题”各建立一个应用程序,还是只建立一个名为“内容”的应用程序?
我不知道该怎么做。也许是因为我对Django还不够了解,但我很感兴趣...
您应该尽可能将项目分为多个应用程序。对于大多数项目,一个应用程序不会包含超过5个模型。例如,像SO这样的项目将为UsersProfiles、Questions、Tags(在Django中有一个现成的标签)等单独创建应用程序。如果有静态页面系统,那么也应该是一个单独的应用程序(为此有现成的应用程序)。您还应该尽可能使您的应用程序通用,以便在其他项目中重复使用它们。有一份关于可重用应用程序的好演示文稿。
就像任何一组依赖项一样...尝试找到项目中最有用的独立部分,并将其制作成独立的应用程序。其他Django应用程序将具有更高级别的功能,并重用您设置的最低级别应用程序的部分。
在我的项目中,我有一个带有自己的Event对象的日历应用程序。我还设置了一个拼车数据库,对于出发时间和持续时间,我直接在我的RideShare表中使用了日历的Event对象。 拼车数据库是与日历相关的,并从日历应用程序获得所有漂亮的.ics导出和日历视图。
有一些技巧可以使应用程序可重用,例如命名模板目录:project/app2/templates/app2/index.html。这使您可以从任何其他应用程序引用app2/index.html,并获取正确的模板。我从Django本身的内置可重用应用程序中学到了这个技巧。Pinax在大小方面有点庞大,但它还演示了一种不错的可重用应用程序结构。
如果有疑问,现在先忘记可重用的应用程序。将所有消息和投票放在一个应用程序中,并完成一次修订。在此过程中,您将发现哪些步骤感觉不必要,并且可以在未来作为独立的内容进行拆分。