3

別のページまたは別のページ内に表示できるオブジェクトのリストがあります(ただし、ajax)。

したがって、私のテンプレートには、別のページ内でリストを表示するときに使用するリスト自体のみを含む「list_template.html」と、ベーステンプレートを拡張して使用する「full_list_template.html」があります。 「include」タグに「list_template」を含めます。

同じURLを使用して、両方の状況でアイテムのリストを取得したいと思います。また、オブジェクトのリストを表示するために汎用のListViewを使用しています。

いくつかの質問:

1)両方の状況で同じURLを使用するのは良いアプローチですか?

2)はいの場合、どのようにして1つのURLをListViewに関連付け、「リクエスト」に従ってtemplate_nameパラメーターを変更できますか?

4

1 に答える 1

6

はい、両方の状況で同じURLを使用し、の値を確認して適切なテンプレートを設定できますrequest.is_ajax()。ここで、class属性を使用する代わりに、メソッドtemplate_nameをオーバーライドしますget_template_names()(このメソッドはテンプレートのリストを返す必要があり、最初に見つかったものが使用されます)。

class MyView(ListView):
    def get_template_names(self):
        if self.request.is_ajax():
            return ['list_template.html']
        return ['full_list_template.html']
于 2012-01-05T21:15:33.457 に答える