0

As a test i have have decided to see if i can get the hashchange navigation trick think working with my django app...

So far i have it at the stage where the hash change triggers and only needs to load the data in, this is where i have problems.

Now, I am new to django and django/ajax and i dont know where to start, did a few googles and had no luck. In a nutshell I need a way to load in the pages without the template using the extend syntax.. Would i just be able to parse an additional value to the url and exclude it from the template?? im not sure

Please give some code guidance or something

4

1 に答える 1

0

テンプレートはブラウザに送信されるhtmlを作成します。クライアントに到達すると、テンプレートはそのページで変更を加えることができなくなります。テンプレートが変更を加えるには、ページを再ロードする必要があります。したがって、ハッシュ変更がトリガーされたときのオプションは、ページの一部としてロードする情報を非表示にすることです。つまり、ページのロード時にユーザーが必要とするすべての情報を知っているか、AJAXを使用する必要があります。AJAXを使用すると、ユーザーがJavascriptを使用してXMLHttpRequestを作成することで、ページをリロードせずに変更を加えることができます。これは、XMLを返す必要はなく、JSONまたは単一のテキスト文字列でもかまいません。したがって、ハッシュの変更がトリガーされると、サイトにリクエスト(通常はGETまたはPOST)が送信されます。サイト上のスクリプトは、クライアント側から送信された情報を処理し、それに応じて応答します。これは、変更トリガー関数内にある例です。

data = "somedata";
request = new XMLHttpRequest(); //create the request object
request.open("POST", "app/handler", false); // set its parameters
request.send("data="+data); // send it to the server
response = request.responseText; // get the response
responseHandler(response) // do something with the data the server sent back

サーバー側では、これがアプリの唯一の目的である可能性があります。すべてのフォーマットは、サイトのベーステンプレート、javascript、およびcssを使用して実行できます。各応答の後に新しい情報をロードするだけです。Django用のAJAXライブラリがいくつかあります。wikiページを確認するか、django.core.serializationを調べて、アプリモデルをjson、xml、またはyamlとして返すことができます。

from django.core import serializers 
def my_json_view(request):
    data = serializers.serialize("json", MyModel.objects.all()[:5])
    return HttpResponse(data, mimetype="application/javascript")
于 2012-08-10T22:32:53.660 に答える