/ / Logique de backend Python Ajouter un framework MVC (Django) - Python, Django, Backend, interaction

Python Backend Logic Ajout du framework MVC (Django) - Python, Django, backend, interaction

J'ai un programme CLI Python, avec base de données SQLmodèles et souhaitez ajouter une interface avec un framework MVC (tel que Django). Quelle est la meilleure façon d’interfacer mon programme avec le framework si j’ai déjà défini mes modèles?

Est-ce que je soit:

  1. Réécrivez le modèle afin qu’il soit partagé par Django et mon programme.
  2. Ecrivez une couche qui sert d'interface entre Django et mon programme
  3. Supprimez le modèle de Mon programme et laissez Django le gérer.

Choix n ° 1: modèle partagé

          My Program
/      |    
Binaries    Model  Classes
|
Django
/    
View     Controller

Choix n ° 2: Créer une bibliothèque de pontage

          My Program
/      |    
Binaries    Model  Classes
|
My-Bridge
|
Django
/ |    
View  Model Controller

Choix n ° 3: Utilisez Django pour la plupart des travaux et supprimez le modèle de mon programme

  Classes

My Program
/      |
Binaries     |
|
My-Bridge
|
Django
/   |    
View   Model   Controller

J'évite le choix n ° 1 (Créer un modèle partagé) car je ne sais pas comment créer un modèle partagé à l'aide de l'ORM et de SQLAlchemy de Django.

Je ne suis pas sûr du choix n ° 2 (créer un pont)parce que je ne sais pas si cela utilise pleinement Django. De la documentation, il semblerait que Django devrait gérer le modèle, étant donné qu’il s’agit d’un framework MVC.

J'évite également le choix n ° 3 (Suppression du modèle du programme) car je devrais réécrire toute la logique SQLAlchemy ORM qui utilise le modèle SQLAlchemy dans My-Program.

Qu'en pensez-vous? Quel est le meilleur choix étant donné que j’ai déjà écrit la version CLI de mon programme?

Réponses:

3 pour la réponse № 1

J'aime Django, mais étant donné ce scénario, vous pouvez également jeter un coup d'œil à Pylônes aussi, car ils supportent SQLAlchemy. Ou vous pouvez toujours travailler avec SQLAlchemy en l'important dans vos vues. Voir ce post sur un exemple pour le faire.


1 pour la réponse № 2

Commençons par observer cette interfacece qui modifie les données sans passer par le back-end ne semble pas être une bonne conception. Cela dit, je ne vois aucune raison technique pour laquelle cela ne peut pas être fait. Nous devons nous rappeler que c’est sa base de données qui préserve l’intégrité des données. C’est pourquoi vous devriez pouvoir utiliser différents ORM ou un ORM avec différents modèles avec la même base de données.

Le modèle ORM que vous utilisez définitivement dicte comment l'intégration entre backend et frontend devraient être joués en dehors.

Je ne le dirais pas dicte le choix. Il serait plus simple d’avoir le même ORM pour le backend et le frontend, mais ce n’est pas une obligation.


0 pour la réponse № 3

J'essayerais de migrer une grande partie de la logique de "MonProgramme "dans un module importable. Demandez à django de l’importer et de partager les paramètres de la base de données. Il est également possible d’exécuter l’instance django et de faire le travail saccadé, puis de laisser le" Mon programme "faire des appels à distance à elle. Accordé cela prendrait probablement le plus de travail.


0 pour la réponse № 4

Réécriture des modèles pour se conformer à l’API de Djangosonne comme le moins de travail possible et le moyen le plus "correct" de résoudre votre problème. Djangos ORM devrait être en mesure de gérer ce que vous voulez faire proprement. L'utilisation de la pile complète rapporte également des dividendes plus tard lorsque vous décidez que vous souhaitez que les formulaires encapsulent vos modèles et tous les autres éléments. du cadre qui attendent une structure de modèle.