私の質問は例で最もよく説明されています。 生徒のテーブルを考えてみましょう。生徒をクリックすると、その生徒の包括的な情報がポップアップで表示されます。まず、ユーザーが学生をクリックするたびに、私はAjax経由でGETリクエストを行い、取得したレスポンスをポップアップに入力しました。 JSコードでポップスとして使用するとDjangoフォームをクライアント側に配置する必要があります
def my_view(request):
if request.method == 'GET':
model_instance = MyModel.objects.get(id = request.POST['id']):
context = {'my_form': MyForm(instance = model_instance)}
msg = render_to_string('my_template.html', context, request = request)
return JsonResponse({'object': msg}, safe = False)
else:
# POST-request for saving input data to db
そして:
$.get(....., function(response){
$(response.object).modal('show');
}
このコードの問題は、ポップアップが遅れで表示されていることである言い換えれば、私はこのような何かをしました。まあ、はい、半分ですが、私は応答が瞬時になるようにしたいと思います。特に、ユーザーのインターネットが遅い場合、ユーザーエクスペリエンスはさらに悪化します。
ここでベストプラクティスは何ですか?代わりに私には次のようなものがあります:メインページ(生徒用テーブルを含む)をレンダリングするときに、空のフォームを渡すか(Djangoのdocがmy_form = MyForm()
を実行してアンバウンドフォームを呼び出すとき)、それからJavaScriptを入力します学生に。このアプローチは超高速のポップアップレンダリングをもたらしますが、アプローチはDRYではなく、ForeignKeyフィールドの場合は非常に厄介です。このアプローチは一般的には迷惑行為です。