これをサーバ上でレンダリングしたいとします(これは説明が簡単です)。これはかなり簡単です。
はそうあなたが$.get()
を使用し$("#the-id-here");
のようにjQueryを使ってそれを参照することができ、あなたのサーバへのAJAX要求を行うことができ、あなたの右のサイドバーid
を与えます。あなたがクリックしている要素のデータを送る必要がありますので、djangoはどのような結果を返すかを知っています。実際には、$.get
で照会できる単純なジャンゴビューを作成し、応答を返すことができるかどうか確認してください。 AJAXの場合は、django.http.HttpResponse
またはdjango.http.JsonResponse
のいずれかがほしいでしょう。
エンドポイントの設定が完了し、AJAXでアクセスできることを確認したら、いくつかのHTMLを返す必要があります。プロジェクトにHTMLテンプレートを作成します。私がフルページをレンダリングしていないAJAXリクエストの場合、テンプレートディレクトリにcomponents/
またはpartials/
というサブフォルダを作成したいと思います。あなたはそうする必要はありませんが、物事を整理しておくのに役立ちます。
テンプレートをレンダリングするAJAXメソッドの場合は、render_to_string を使用します。これにより、私はどのように応答をフォーマットする必要があるかについて、私にいくつかの自由が与えられます。私はHTMLだけでなく、いくつかのメタデータを含んでいるいくつかのJSONを返すしたい場合たとえば、私が行うことができます:バックJavaScriptで
return JsonResponse({
"html": render_to_string("my_template.html", {"data": "abc"}),
"status": "ok"
})
は、あなたが行った後、あなたのAJAXは、成功コールバック関数があるでしょうあなたを呼び出します。コールバックでは、
$("#your-element").html(/* response here */)
で、コンテナのHTMLを更新することになるでしょうあなたがiwthを選択することができますIDでHTML内のコンテナを作成します
を要約するjQueryの
作成Djangoのビューとrender_to_string
とを使用してテンプレートをレンダリングし
バックレンダリングされ、送信されますあなたのテンプレートを作成します
、あなたがそれにAJAX呼び出しを行うことができます検証応答をより詳細に制御する必要がある場合はを入力します。
AJAX成功のコールバックでは、応答を使用して、レンダリングされたテンプレートでコンテナを塗りつぶします。
HI!ウォークスルーをありがとう、私はまだAJAXの部分にはまっています。 ajax関数の下には、blahblahblahというURLがあります。私のURLは、いくつかのPKsを取り込むジャンゴーダイナミックなURLです(クラスルーム用のpk、教室に属するフォーラム用のpk2、ポスト用のpk3これはフォーラムに属します)。動的URLを使用した場合(つまり、{%url "classroom:forum:detail" pk pk2 post.pk%})、スクリプトにpksがロードされていないのでエラーになります。 – Yudi
@Yudiキーは、テンプレート内の動的変数を定義することです。外部のjsファイルを読み込む前に、 '