我可以更改基于类的视图的模板搜索行为吗?

时间:2013-11-19 21:03:32

标签: python django django-templates django-class-based-views

我有一个叫做交易的应用。在这个应用程序中,我有一个名为BatchFile的模型。在我的views.py文件中,我是ListView的子类(以及其他)。默认行为是django认为batchfile_list.html应位于:

templates/transactions/batchfile_list.html

那很好,但文件夹越来越拥挤。我可以将“templates / transactions / batchfiles”添加到TEMPLATE_DIRS,但是因为默认行为是查找appname / modelname_type.html,这需要我将模板放入:

templates/transactions/batchfiles/transactions/batchfile_list.html

当我真的喜欢它时:

templates/transactions/batchfiles/batchfile_list.html

或我的最佳结果:

templates/transactions/batchfiles/list.html  

是否有配置选项可以让我这样做?我知道最佳结果可能不是很干净,但我希望至少有一个不太理想的结果。

谢谢!

1 个答案:

答案 0 :(得分:2)

最简单的方法是指定template_name

class MyListView(ListView):
    template_name = "transactions/batchfiles/list.html"

另一种方法是覆盖get_template_names

class MyListView(ListView):

    def get_template_names(self):
        return ["transactions/batchfiles/list.html"]

请注意,它需要返回可能的模板位置列表。

在这种情况下,只有一个是所需的位置。