私はDjangoを学んでいて、クラスベースのビューを見つけました。それらのビューにAjaxを実装する方法を考えています。
githubでdjangoプロジェクトを検索したところ、クラスベースのビューを使用しているものが見つかりましたが、ajaxは使用していません。
だから...誰もが両方を使用するオープンソースプロジェクトを知っていますか?そのように学ぶ方が簡単です。
ありがとうございました :)
私はDjangoを学んでいて、クラスベースのビューを見つけました。それらのビューにAjaxを実装する方法を考えています。
githubでdjangoプロジェクトを検索したところ、クラスベースのビューを使用しているものが見つかりましたが、ajaxは使用していません。
だから...誰もが両方を使用するオープンソースプロジェクトを知っていますか?そのように学ぶ方が簡単です。
ありがとうございました :)
人気のある dajaxic および dajax パッケージを使用しなくても、簡単なことです。
次のように、リクエスト オブジェクトに対して django の is_ajax() 関数をラップするだけのデコレータを作成すると役立ちます。
def ajax_request(function):
def wrapper(request, *args, **kwargs):
if not request.is_ajax():
return render_to_response('error/ajax_required.html', {},
context_instance=RequestContext(request))
else:
return function(request, *args, **kwargs)
return wrapper
この特定の失敗を処理する ajax_required というテンプレートがあると仮定します。このようなものは、それが望ましくない場合、ユーザーがブラウザーに ajax 固有の URL を入力するのを防ぎます。
例を短くするため、テンプレートをレンダリングするクラス ベースの ajax ビューを次に示します。
from django.views.generic.base import TemplateView
class AjaxGeneral(TemplateView):
template_name= None
def get(self, request):
data={}
return render_to_response(self.template_name, data,
context_instance=RequestContext(request))
@method_decorator(ajax_request)
def dispatch(self, *args, **kwargs):
return super(AjaxGeneral, self).dispatch(*args, **kwargs)
HTML スニペットをレンダリングする必要があるすべての ajax に対して、次のような短いクラス ベースのビューを定義できます。
class ShowSomeTable(AjaxGeneral):
template_name="some_table.html"
some_table.html に html スニペットが含まれていると仮定します。
このビューの urls.py エントリは次のようになります。
url(r'showtable/$', ShowSomeTable.as_view()),
次のように、通常どおりjsで呼び出すことができます。
$(#dynamic-content).load('/showtable');