5

Django の request.is_ajax は、JS を介してプログレッシブ エンハンスメントを追加し、DRY を維持するための非常に便利な方法だと思います。

ただし、クラスベースのビューを使用し、request.is_ajax の場合は別のテンプレートでレンダリングしたいと考えています。

デフォルトの「template_name」をオーバーライドして、クラスベースのビューでテンプレートの読み込みを条件付きにする方法がわかりません。

これどうやってするの?

4

2 に答える 2

11

get_template_names をオーバーライドします。

def get_template_names(self):
    if self.request.is_ajax():
        return ['ajax_template.html']
    else:
        return ['standard_template.html']
于 2012-08-02T17:06:26.730 に答える
4

これを行う適切な方法は、 によって提供されるメソッドをオーバーライドすることTemplateResponseMixinです。

Ajax リクエストに別のテンプレートを提供する必要があるだけの場合は、オーバーライドしますget_template_names。まったく別の応答 (応答など) を提供したい場合はapplication/json、オーバーライドして、 Ajax 要求に対してrender_to_response別の応答を生成します。HttpResponse

于 2012-08-02T17:06:42.560 に答える