2011-01-02 5 views
3

私はPython CLIプログラムをSQLデータベースモデルとともに使用しており、フロントエンドにMVCフレームワーク(Djangoなど)を追加したいと考えています。私のモデルを既に定義していれば、私のプログラムとフレームワークをインターフェースする最良の方法は何ですか?PythonバックエンドロジックMVCフレームワーク(Django)の追加

は、Iのいずれかの操作を行います。ジャンゴと私のプログラム

  • 間のインタフェースは、私のプログラムからモデルを削除してみましょう層を書くジャンゴと私のプログラム
  • の両方で共有されますので、

      は、モデルを書き直し
    1. Djangoは扱うこと

    選択肢#1:共有モデル

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

    選択肢#2:ブリッジングライブラリ

    を作成
      My Program 
         / | \ 
        Binaries Model Classes 
           | 
          My-Bridge 
           | 
          Django 
          /| \ 
         View Model Controller 
    

    選択肢#3:ほとんどの作業のための使用ジャンゴと私のプログラムからモデルを削除

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

    DjangoのORMとSQLAlchemyを使用して共有モデルを作成する方法がわからないため、選択肢#1(共有モデルの作成)は避けています。

    私はこれがDjangoを最大限に使用するかどうかわからないので、選択肢#2(ブリッジの作成)についてはわかりません。ドキュメンテーションから、DjangoはMVCのフレームワークを考慮すると、モデルを扱うべきだと思われるようです。

    My-プログラムでSQLAlchemyモデルを使用するすべてのSQLAlchemy ORMロジックを書き直す必要があるため、選択肢#3(プログラムからのモデルの削除)も避けています。

    あなたはどう思いますか?私のプログラムのCLI版をすでに書いていることを考えれば、どちらの選択肢が最適でしょうか?

  • +0

    優秀な質問です。それも私が解決しなければならないことですが、私の場合、私は新しいプロジェクトを開始しようとしています。私はバックエンドとフロントエンドのパーツを、あなたが記述している通りに正確に分けておきたいと思います。 –

    +0

    フロントエンド(Django)は、既存のアプリケーションで管理されているデータを表示することのみを目的としていますか、それともデータ自体を変更しますか? –

    +0

    データを表示するための他のより単純なウェブフロントエンドがあるので、データを管理することもできます – Lionel

    答えて

    3

    私はDjangoが大好きですが、このシナリオでは、SQLAlchemyをサポートしているので、Pylonsも見ることができます。または、SQLAlchemyをビューにインポートすることで、SQLAlchemyを使用して作業することもできます。そのための例としてSee this postがあります。

    +0

    これはおそらく最善の方法です。使用するモデルORMは、バックエンドとフロントエンドの統合をどのように行うべきかを明確に規定しています。 – Lionel

    +0

    @Lionelまあ、私はあなたの声明ではないでしょう。 –

    0

    私は、「マイプログラム」のロジックの多くをインポート可能なモジュールに移行しようとしています。次に、djangoにこれをインポートさせ、それらのデータベースの設定を共有します。また、djangoインスタンスを実行し、不平を言って、「My Program」でリモート呼び出しを行うことも可能です。それがおそらく最も多くの仕事をとることが許される。

    +1

    モデルについてはどうですか?データを表示するにはDjangoのORMを使用する必要があり、SQLAlchemyをプログラムで使用する必要があります。 – Lionel

    0

    djangoのapiに準拠するようにモデルを書き換えることは、仕事量が最も少なく、問題を解決するための最も正しい方法です。いくつかの「高度な」データベースアクセスをしていない限り、Djangos ORMはあなたがしたいことをきちんと処理できるはずです。フルスタックを使用することで、フォームをラッピングすることを決定した後で配当を支払うことができます。

    1

    バックエンドは良いデザインのような音はありませんバイパスデータを変更するフロントエンドの観察を行うことによって開始のをしてみましょう。これを言っても、技術的な理由は見当たりません。データの整合性を保つデータベースであることを覚えておく必要があります。そのため、同じデータベースで異なるORMまたは異なるモデルを使用できるようにする必要があります。

    あなたは間違いなく を使用したモデルのORMは バックエンドとフロントエンド間の統合が アウトを果たしする方法を決定します。

    は、を選択します。バックエンドとフロントエンドのORMを同じにする方が簡単ですが、それは必須ではありません。

    関連する問題