「View Story」というビューは、Python/Django経由でバックエンドでレンダリングされた単なるWebページです。そのページには、Djangoのテンプレートシステム(ループ内)を使用している "View Story"テンプレートの一部としてレンダリングされた一番下のコメントのリストがあります。このページでは、リストにコメントを追加することもできます。これはAJAXによって行われ、ページは新しいコメントで更新されます(新しい全ページ要求を送信することなく)。最初にページをレンダリングし、同じテンプレートを使用してAJAX経由で更新するHTML
新しいコメントをリストの末尾に追加すると、この新しいコメント(<li>
の中にあるもの)のために生成されたHTMLが元のコメントを生成するために使用されたのとまったく同じコードを使用します。クライアントに送信します。これを行うには複数の方法があります
:
は、最初のレンダリングはjavascriptの変数にコメントデータを投げる持って、ページがレンダリングされるとJavaScriptを介してコンテンツを追加します。新しいコメントが追加されると、同じJavaScriptが新しいものを表示するために使用されます。問題は:検索エンジンの観点から私は、ページがレンダリングされた後に生成された場合、Googleがコメントを索引付けできるかどうかわからない - 私は推測していないと思う。
新しいコメントが追加されるたびにAJAXを介して、新しいコメントのJSONデータだけでなく、ページに入れるためにajaxリクエストで実際のHTMLを返すようにします。元のページのレンダリングに使用されたのと同じテンプレートスニペットを使用してHTMLを生成できます。これの問題は、AJAXのリクエストを特定のビューまたは私が気に入らないレンダリングの方法に結び付けることです。
#2と似ている点を除いて、新しいコメントまたはすべてのコメントのHTMLを取得するために別個のリクエストが行われ、リストが消去されて再レンダリングされる点が異なります。それは深く非効率的で、不必要に時間を消費するためです。
要約すると、テンプレート/ HTMLコードを1つのビューに複製しないようにする方法が必要です。そして、私は、これがバックエンドの技術に関係なく一般的なケースであると確信しているので、他の人のために働いていたことについていくつかアドバイスをしたいと思います。
ありがとうございます!
ええ、私は同意します。私は完全性のために可能性をカバーしたかっただけです。 – Karim