私はかなり大きなプロジェクトに取り組んでいます。ここでは、通常のリクエストと同じURLを使ったajaxリクエストを介してすべてのビューにアクセスできるようにします。私は非常に一般的な方法でこれを処理する小さなフレームワークを作成する方法のアイデアを探しています。ビューがajax経由で呼び出されるかどうかによって、別のテンプレートをレンダリングしてHttpResponse
オブジェクトの代わりにjsonを返す必要があります。私はこのトピックに関するアイデアを集めたいと思います。主な目的は、乾いた原則を避け、可能な限り再利用可能なコードを作ることではありません。私はすでに一般的なビュー、ビューのデコレータなどさまざまなオプションを検討していましたが、私は何かを開いています。だから私はあなたの提案を聞かせてくれるか、あなたが知っているレディメイドスニペットに向けて私を指差すようにしてください!djangoを使ったAjaxビュー
3
A
答えて
6
This articleは、ajaxと定期的なリクエストの両方を処理する方法についての非常に良いチュートリアルのようです。 request
オブジェクトには、を検索するis_ajax()
メソッドがあります。これはもちろん、リクエストを送信するjavascriptによって正しく設定されているこれらの値に依存します。記事から
:
from django.http import HttpResponse
from django.core import serializers
from django.shortcuts import render_to_response
from your_app.models import ExampleModel
def xhr_test(request, format):
obj = ExampleModel.objects.all()
if request.is_ajax():
data = serializers.serialize('json', obj)
return HttpResponse(data,'json')
else:
return render_to_response('template.html', {'obj':obj}, context=...)
それとも、あなたはDjangoのためのRESTfulなフレームワークであるdjango-pistonを使用することができます。私は私のプロジェクトでこのモジュールを使用します。あなたはリソース(ビューのようなもの)を定義することができ、あなたのURLに渡されるMIMEタイプまたはフォーマットに応じて、html、xml、またはjsonのいずれかを発行します。すべての単一のビュー(または大多数)を異なるフォーマットで返す必要がある場合には、これはおそらく最良の方法です。
0
私はこれにデコレータを使用しました。ビューにコンテキスト、テンプレート、および代替テンプレートを戻します。
Ajaxバージョンでデータを返す場合、3番目の戻り値をJSONに変換するデータオブジェクトにすることができます。
関連する問題
- 1. ajaxレスポンスとHttpResponseを使ったdjangoフォーム
- 2. Django CMSと通常のdjangoビューby ajax
- 3. AjaxでDjangoビューを呼び出す
- 4. AJAXデータが間違ったDjangoビューに送られています
- 5. プロトタイプとDjangoを使ったAjaxオートコンプリート機能
- 6. AJAXを使ったDjango動的HTMLテーブルのリフレッシュ
- 7. Ajaxレスポンスを処理するためのdjangoクラスベースのビュー
- 8. ModelChoiceFieldを使用したDjangoクラスベースのビュー
- 9. get_queryset()を使用したDjangoクラスベースのビュー
- 10. Ajax/Javascript/Djangoを使用したCORSリクエスト
- 11. Ajaxを使用したDjangoのハイチャート
- 12. Ajaxを使用したDjango POST
- 13. AJAXを使ったJQueryオートコンプリート
- 14. ajaxを使ったメニューナビゲーション
- 15. Jquery&Ajaxを使ったアニメーションコンテンツ
- 16. PHPを使ったAjaxインタラクティブファイルアップロード
- 17. Ajaxを使ったワードプレスポストフィルター
- 18. ajaxを使ったオートリフレッシュ
- 19. Django - DetailViewを使ったCreateView
- 20. sctを使ったdjangoテンプレートエラー
- 21. JSONを使ったDjangoテンプレート
- 22. JQueryとAJAXを使ってDjangoのdivを更新する
- 23. DjangoのAjaxとBoto3を使ってS3にファイルをアップロード
- 24. ajaxとdjangoを使ってファイルを読み込む方法は?
- 25. djangoテンプレートでajaxを使ってdivを更新する
- 26. mongodbを使ったdjangoとgoogle mapsを使ったGISアプリケーション
- 27. Django "ビューは、151行目のHttpResponseオブジェクトを返さなかった"
- 28. django-ajax-select exampleの使用
- 29. AJAXポストリクエストがDjangoビューに値を送信しない
- 30. Django - jQuery ajaxでリストアイテムのid/pkをビューに渡す
よくこれを行う一般的な方法です、私はいつもビューのajax/non-ajaxリクエストの切り替えを繰り返す必要がない素晴らしい方法を探しています... –
@lazerは私の終わりを見ますジャンゴピストンについて語る答え。これにより、MIMEタイプまたはURLパラメータに基づいて異なる応答を返すことができます。 –
+1は既にプロジェクトの一部であるピストンのアイデアですが、 "通常の"使用のための残りのAPIとしてのみ使用されています。 –