3

我有一个对象列表,可以看作是单独的页面或在另一个页面中(尽管是 ajax)。

所以,在我的模板中,我有一个“list_template.html”,它只有列表本身,当我在另一个页面中查看列表时使用它,还有一个“full_list_template.html”,它扩展了基本模板并使用“include”标签以在其中包含“list_template”。

我想在这两种情况下使用相同的 URL 来获取项目列表。我还使用通用 ListView 来显示对象列表。

几个问题:

1)在两种情况下使用相同的 URL 是一种好方法吗?

2) 如果是,我怎样才能有一个与 ListView 关联的 URL 并根据“请求”更改 template_name 参数?

4

1 回答 1

6

是的,您可以在这两种情况下使用相同的 URL,并通过检查 的值来设置适当的模板request.is_ajax()。现在不要使用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 回答