4

カウンターと 2 つのボタンがある単純なページを想像してください。カウンターによって表示される値は、モデルのフィールドに読み取られて格納されます。「緑」ボタンを押すとカウンターが1つ増え、「赤」ボタンを押すとカウンターが1つ減ります。そのような動作を実装する最良の方法は何ですか:

  1. ボタンは、モデルのフィールド (DB 書き込み) を更新するモデルのメソッド (Django メソッド) を呼び出します。ページ全体が更新され、カウンター表示が更新されます (DB 読み取り)。
  2. ボタンは、カウンター表示を更新する JavaScript 関数を呼び出します (JS/HTML)。バックグラウンドで、モデルのメソッド (Django メソッド) が呼び出され、モデルのフィールドが更新されます (DB 書き込み)。
  3. さらに別の方法ですか?

JavaScript コードは Django 関数を呼び出すことができますか? 私は Django の初心者です (チュートリアルを第 4 部まで進めました)。MVC/MTV の概念とデータの読み取り/書き込み/表示については既に理解していますが、今気になっているのは、ページに動作/対話性を導入することです。

4

3 に答える 3

20

ブラウザ側の JavaScript はフロントエンドにあり、Django はバックエンド (サーバー側) でサービスを提供しています。前者は後者の関数を直接呼び出すことはできませんし、その必要もありません。それらの間のインターフェースは通常、Web サービス API、つまり、Django によってサポートされている Web サービスで定義された URL を使用して AJAX 呼び出しを行うブラウザーです。

より具体的には、JavaScript が Web サーバーに HTTP リクエストを送信し、次に Django の URL ディスパッチャーがリクエスト URL を対応する Django ビュー (関数ベースまたはクラスベース) にマップします。要するに、典型的なルートは次のように簡略化できます。

JavaScript -> HTTP リクエスト -> Django URL ディスパッチャ (マッピング ルールは urls.py または urls/XXX.py にあります) -> Django ビュー関数 (views.py または views/XXX.py) -> Django フォーム (オプション) -> Django モデル (オプション)。

Django の技術的な詳細については、Django チュートリアルまたはPractical django Projectsを参照してください。

最後に: JavaScript が Django 関数のメソッド/関数を呼び出すことができたとしても、それは避けるべきです。Web サービスの観点から見ると、Django のメソッド/関数は実装の詳細にすぎず、(Web サービス API と比較して) 変更される可能性が高くなります。バックエンドの開発者は、何らかの理由で関数名を変更したり、Django 以外のフレームワークに切り替えたり、Java、Ruby、PHP などのプログラミング言語を変更したりすることがあります。

于 2013-02-06T10:57:35.900 に答える
4

JavaScriptはブラウザで実行されますが、Djangoはサーバーで実行されます。ブラウザはHTTPを使用してサーバーと通信します。

XMLHttpRequest APIを使用して、JavaScriptからHTTP呼び出しを行うことができます。(これはAJAXと呼ばれることがよくあります。)HTTP GETリクエスト(ブラウザがリンクをクリックしたときに送信するのと同じリクエスト)またはHTTP POSTリクエスト(ブラウザがフォームを送信するときに送信するのと同じリクエスト)をに送信できます。サーバー上のURL。

チュートリアルからわかるように、urls.pyを介してこのURLを処理するようにDjangoを設定しました。

于 2013-02-06T11:15:42.890 に答える
1

AJAX、jQuery、またはdajaxを使用すると、簡単に操作できます。

于 2013-02-06T11:13:48.383 に答える