-2

私は Django webapp を作成しようとしていますが、メトリクス表示ページ (/monitoring) の開発を節約したいと考えています。実際には、従来の webapp の機能/成熟度とユーザーの親しみやすさを考えると、従来の php 実装に勝るものはほとんどありません。

レガシー php webapp を django アプリケーションに統合する方法はありますか?

この投稿は、私が考えていることに多少関連していると感じています。ただし、従来の webapp のコードには触れたくないので、推奨される方法にはそれが必要なようです。

私が考えている別のアプローチは、URL "/monitoring" を既存のレガシー php webapp に送信し、残りを django webapp に送信するように apache サーバーをセットアップすることです。しかし、この方法では、"/monitoring" ページの Django Web アプリケーションに実装されているユーザー サインイン機能を制御できません。

4

1 に答える 1

1

私の意見では、あなたがリンクした投稿で提案されていることはまったく良くありません。まず、「何」を統合するかを検討する必要があります。

  • 動作: (関数、ビジネス ロジックなど)。
  • 構造: DB 接続、操作
  • カスタムドライバー
  • レンダリングのもの。実際のシステムがビュー/ページ/その他をどのようにレンダリングし、そのまま表示するか。

あなたがリンクした投稿で、その男はすべてを統合したいと考えていました: 彼は以前に PHP ページで見たものを取得し、それを django アプリのように表示したかっただけです。正直なところ、それは良くありません。(個人的な経験に基づいて) 既にレンダリングされたページを django アプリに統合しないことをお勧めします。

できることは、機能と動作を統合することです。たとえば、PHP 監視システムが一定期間のユーザー数を取得するとします。1 つの PHP 関数があります。

<?php
function show_users($time_period){
   ...
}
?>

その監視システムから HTML を取得して Django アプリに配置する代わりに、動作を取得する必要があります。たとえば、REST インターフェイスを介して PHP アプリケーションを公開します。したがって、Django コードでは次のようにすることができます。

# views.py
def monitoring(request):
    users = monitoring_service('/users/2012/')
    render(request, 'monitoring.html', {'users': users}

あなたのテンプレートで:

# monitoring.html
<ul>
{% for user in users %}
    <li> {{user}} </li>
{% endfor %}
</ul>

基本的に、PHP アプリの機能を再利用しています。しかし、あなたはレンダリング部分を処理しています。もちろん、それにはもう少し手間がかかりますが、それだけの価値はあると信じてください。

追加:

REST は優れたソリューションであるため、REST を提案しました。ただし、Thrift、Protocol Buffers、MessagePack (ほんの数例) など、通信する他のインターフェイスを選択することもできます。

于 2012-11-29T15:00:34.703 に答える