0

Google アプリ エンジンと Google docs/gdata を使用してデータ プロット ツールを作成していますが、python/js/html 通信の問題が発生しました。

一連のドロップダウン メニュー セクションと最終的なグラフだけの、非常にシンプルな Web ページのレイアウトが必要です。私の現在のジレンマには、ドロップダウン メニューが関係しています。

合計 4 つのドロップダウン メニューがあり、それぞれのフィールドは前の選択内容によって異なります。必要なロジックをすべて備えた JS/HTML コードを見つけましたが、すべての選択フィールドがプリロードされていることを前提としています。プロジェクトの規模により、起動時にすべてをロードすることは不可能であり、データは動的/変化するため、メニュー選択データが含まれている静的ファイルを宣言することはできません。

現在、必要なすべてのメニュー選択/データをGoogleドキュメントから取得する方法があります(gdataを使用)。理想的には、それぞれを順番に呼び出したいだけです(html selection1 -> python method1 で次の選択セットを取得する -> html selection2 -> python method2 で次の選択セットを取得する -> など)が、収集できるものから、このように見えますできません (ページ全体をリロードせずに python、つまり「投稿」に戻ります)。

それで、最初のテンプレートがレンダリングされた後、または「投稿」せずに、google-app-engine JSコードのpython変数/メソッドにアクセスする方法はありますか? または、より自由に、誰かが洞察/提案/アイデアを持っているなら、私はそれを感謝します.

ありがとう

4

1 に答える 1

1

2 段階のプロセス:

  1. データを JSON として返すサーバー側コードを作成します。これは、Web 上でデータを転送するためのデファクト メソッドです。

  2. JavaScript コードで、(ステップ 1 から) サーバーを呼び出し、結果を解析します。結果を使用してドロップダウンに入力します。

幸いなことに、Google はすでに gdata API の代替形式として json を提供しています。gdata を使用して JSON を返す方法の入門書については、このリンクを参照してください。

2 番目の部分については、ほとんどすべての JavaScript クライアント側ライブラリ (実際に 1 つを使用する必要があります) は、ajax を使用してデータを要求する簡単な方法を提供します。これは一般的なタスクであるため、これに関する StackOverflow に関する質問がたくさんあります。特に、これには、jquery と ajax を使用してドロップダウンにデータを入力する方法を示す例があります。

JavaScript を使用して、Python コードが提供する機能を複製できると仮定すると、上記は機能します。クライアント側に転送したくない特定のロジックがある場合、Python コードは json を返す必要があります (実際には、JavaScript コードの gdata API のように動作することになります)。

使用している Python フレームワークを強調していないため、Python Web 開発用の単純なフレームワークであるフラスコを使用した例を次に示します。

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/the-question')
def the_answer():
    return jsonify(answer=42)

より包括的な例は、ドキュメントのAJAX with jQueryにあります。

webapp2 を使用している場合、Google は同じことを行うための優れたドキュメントを提供しています。

于 2013-03-18T04:12:14.007 に答える