在Python后端逻辑中添加MVC框架(Django)

3 投票
4 回答
685 浏览
提问于 2025-04-16 09:18

我有一个用Python写的命令行程序,里面有SQL数据库模型,现在想加一个前端,使用MVC框架(比如Django)。我已经定义了我的模型,想知道怎么把我的程序和这个框架连接起来,最好的方法是什么。

我可以选择:

  1. 重写模型,让Django和我的程序都能用
  2. 写一个中间层,让Django和我的程序可以沟通
  3. 把模型从我的程序里去掉,让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来处理后端和前端会更简单,但这并不是必须的。

3

我很喜欢Django,但在这种情况下,你也可以看看Pylons,因为它支持SQLAlchemy。或者你也可以通过在你的视图中导入SQLAlchemy来继续使用它。看看这篇帖子,里面有一个关于如何做到这一点的例子。

撰写回答