在Python后端逻辑中添加MVC框架(Django)
我有一个用Python写的命令行程序,里面有SQL数据库模型,现在想加一个前端,使用MVC框架(比如Django)。我已经定义了我的模型,想知道怎么把我的程序和这个框架连接起来,最好的方法是什么。
我可以选择:
- 重写模型,让Django和我的程序都能用
- 写一个中间层,让Django和我的程序可以沟通
- 把模型从我的程序里去掉,让Django来处理
选择 #1: 共享模型
My Program / | \ Binaries Model Classes | Django / \ View Controller
选择 #2: 创建一个桥接库
My Program / | \ Binaries Model Classes | My-Bridge | Django / | \ View Model Controller
选择 #3: 让Django处理大部分工作,去掉我程序里的模型
Classes \ My Program / | Binaries | | My-Bridge | Django / | \ View Model Controller
我不想选择第一个选项(创建共享模型),因为我不知道怎么用Django的ORM和SQLAlchemy来创建一个共享模型。
我对第二个选项(创建桥接)也不太确定,因为我不知道这样做是否能充分利用Django。从文档来看,Django应该负责处理模型,因为它是一个MVC框架。
我也不想选择第三个选项(从程序中去掉模型),因为那样我得重写所有用到SQLAlchemy模型的逻辑。
你们觉得怎么样?考虑到我已经写好了命令行版本的程序,哪个选择最好呢?
4 个回答
0
我会尝试把“My Program”的大部分逻辑迁移到一个可以被导入的模块中。然后,让Django导入这个模块,并共享数据库的设置。也可以让Django实例在后台运行,处理一些繁琐的工作,而“My Program”则可以远程调用它。虽然这样做可能需要更多的工作。
1
首先,我们要注意到,前端直接修改数据而不经过后端,这听起来并不是一个好的设计。不过,我并不认为从技术上来说这是不可能的。我们要记住,数据库负责保持数据的完整性。这就是为什么你应该能够使用不同的ORM(对象关系映射工具),或者用同一个ORM配合不同的模型来操作同一个数据库。
你使用的模型ORM确实会影响后端和前端之间的整合方式。
我不会说它决定了选择。虽然使用同一个ORM来处理后端和前端会更简单,但这并不是必须的。