2

現在、Django のプロジェクトに取り組んでおり、現在、いくつかの要素を含むフォームに取り組んでいます。各要素は動的であり、その上の要素の値が変更されたときにオプションを更新する必要があります。別の要素の値が変更されるたびに AJAX を使用して要素の内容を更新できることは知っていますが、もっと Django の方法があるかどうか、またはとにかくこのサーバー側を行う方法があるかどうか疑問に思っていましたか? 私の主な目標は、毎回ページ全体をリロードせずにそれを行うことです。フィードバックは大歓迎です。ありがとう!

更新: 私の質問はDjango ajax form, choicefields の依存関係に非常に似ていますが、答えで何が起こっているのか完全には理解していません。誰かがそれをもう少し詳しく説明できれば、今のところ私の問題はすべて解決するでしょう. その答えを試していますが、読み込もうとすると 500 および 403 エラーが発生します。

フォローアップ: どうやら私の問題はすべて古い jQuery ライブラリから発生していたようです。それを更新すると、すべてが再び機能しました!

4

1 に答える 1

6

私の知る限り、Ajax を行う標準的な Django の方法はありません…しかし、自分で行うのは非常に簡単です。

まず、ビューを更新するために必要な JSON データを返すビューを作成する必要があります。たとえば、州内の都市のリストは次のとおりです。

from django.utils import simplejson as json

def list_cities(request):
    cities = city_names_in_province(request.GET["province"])
    return json.dumps(cities)

次に、HTML からそのビューを呼び出す必要があります (jQuery を想定):

<select id="provinces">
    …
</select>

<select id="cities" disabled="true">
    <option>---</option>
</select>

<script>
$("#provinces").change(function() {
    var province = $(this).val();
    $.getJSON("{% url list_cities %}", { province: province }, function(cities) {
        var cities_select = $("#cities");
        … put the `cities` list into the `cities_select` …
    });
});
</script>

また、「準備」とエラー チェック (たとえば、 の呼び出しが失敗した場合はどうなるか) を除けば、list_cities基本的にはそれだけです。

于 2011-07-10T08:12:38.583 に答える