1

私は最初のDjangoアプリケーションを作成していて、いくつかのAJAXの問題に直面しています。私のウェブサイトでは、ユーザーは写真のギャラリーを見ることができます。このページにアクセスするには、/photosにアクセスするだけです。写真ビューは、表示する写真を計算し、レンダリングのためにテンプレートに渡します。

ボタンをクリックすると、さらに写真を表示するようにリクエストできます。このボタンをクリックすると、AJAXリクエストがサーバーに送信されます。サーバーは、表示する新しい写真のセットを計算してから、もう一度同じテンプレートに写真を渡して表示します。唯一の問題は、画面上の写真が変更されないことです。

サーバーによって新しい写真が計算されていることを確認しました。残念ながら、起こるべき多くのことが実際には起こりません。何よりもまず、Chrome開発者ツールを使用すると、写真ファイルがサーバーからブラウザーに送信されることはないことがわかります。さらに、DOMは新しい写真を参照するためにsrc属性を更新することはありません。これらのことを実現するために私は何をする必要がありますか?

ありがとうございました。

編集:

いくつかのコード:

#The python view summarized
def photos:
    photoList = GetListOfPhotos() #Returns photo objects.  These objects have a file field which is access from the template.
        return render(request,
              'photos.html', 
             {'photoList': photoList}, 
              context_instance=RequestContext(request)
             )

#AJAX request
$(document).ready(function(){
    $("#right-arrow").click(function(event) {
        $.post("/photos/", {"arrow" : "right"
        });
    });
});
4

1 に答える 1

0

私にとって最も疑わしいことはあなたが言うことです

もう一度、写真を同じテンプレートに渡して表示します。

/photoこれはあなたのURLが対応するのとまったく同じテンプレートですか?もしそうなら、おそらくリストやテーブルに写真をレンダリングするためだけにその小さなサブセクションを使用する必要があります(またはそれらを表示する方法)それ以外に、これを解決するのに役立つことがいくつかあります。

  1. Chromeデベロッパーツールでは、JavaScriptが正しいデータを送信していることを確認してください。これは、ネットタブでパラメータを確認し、コンソールログを自由に使用することで実行できます。

  2. ビューが実際に想定どおりに機能していることを確認します。私はpdbが好きです。これに最適です。テストを書いたり、ステートメントを印刷したり、w/eを作成したりできます。

  3. フロントエンドがデータを受信して​​いることを確認します。Chromeツールはこれを行うのに役立ちます。ネットタブでは、応答を確認できます。

もっと具体的にしたいのですが、具体的な情報は提供されていません。

より良い回答を支援するには、関連するすべてのコードを投稿することが重要です。

于 2012-09-11T00:04:53.537 に答える