Django代码组织

时间:2015-08-15 05:55:18

标签: python django

我最近开始使用Django。我正在使用现有的基于Django / Python的站点。特别是我实现了一些功能,以便在命中特定URL时创建和显示PDF文档。我在app的url文件中有一个条目,该文件路由到视图文件中的函数,并且PDF生成工作正常。

然而,视图功能非常大,我想在某处提取代码以尽可能地保持我的视图,但我不确定最佳/正确的方法。我可能需要在适当的时候生成其他PDF文件,因此创建一个“pdfs”文件是有意义的。应用程序并将代码放在那里?如果是这样,它应该进入模型还是视图?

例如,在PHP / CodeIgniter环境中,我会将代码放入模型中,但模型似乎与Django中的数据库表紧密相关,并且我不需要任何数据库功能。

来自更有经验的Django用户的任何指示/建议都将受到赞赏。

由于

2 个答案:

答案 0 :(得分:4)

如果您计划扩展项目,我建议将其移至单独的应用程序。一般来说,直接生成基于url命中的PDF并不是表现最好的方法。 在您的服务器上生成PDF文件非常繁重,因此如果多个人同时执行此操作,系统的性能将受到影响。

作为第一步,只需将其放在一个单独的类中,然后从视图中执行该代码。 在某些时候,您可能希望进行一些权限检查等 - 保留在视图中,而PDF本身的生成将完全分开。

一旦您测试了代码,缩放等等 - 那么您可以在视图中替换该一行调用,将PDF生成放入队列中,只有在完成后才将其拉出 - 这样您就可以管理计算能力更强。

答案 1 :(得分:2)

是的,你原则上可以在应用程序中执行它(可重用应用程序的概念是它们存在的基础)

然而,没有多少人这样做/没有多少应用程序需要它。这取决于如何/如何共享功能。换句话说,必须有一个真正的好处。

代码通常同时出现在视图中和模型中(用于隔离代码和模型管理器)