Django:设置template_name在基于类的视图中不起作用

gzjq41n4  于 12个月前  发布在  Go
关注(0)|答案(1)|浏览(82)

我有一个ProductListView

class ProductListView(ListView):
    model = Product
    template_name = 'products/product_list.html'
    context_object_name = 'products'

字符串
我尝试创建另一个ListView列表Product

class VoteView(ListView):
    model = Product
    template_name = 'recommendation/rec_product_list.html'
    context_object_name = 'products'


但是当我试图在浏览器中访问VoteView时,它出现错误:它呈现product_list.html,而不是rec_product_list.html
所以我调试了一下,发现get_template_names()返回了['recommendation/rec_product_list.html', 'products/product_list.html']
我可以通过插入以下代码来解决这个问题:

def get_template_names(self):
    return ['recommendation/rec_product_list.html']


但是不知道是否有比这更好的方法。
谢谢

kg7wmglp

kg7wmglp1#

我也有同样的问题,问题是在我的template_name配置中的应用程序名称。我使用了项目名称而不是应用程序名称,并且在项目模板文件夹中查找模板。找不到模板,ListView默默地从应用程序文件夹中获取默认模板。我发现这只是由于上面的get_template_names方法,因为它引发了错误,而不是默默地失败并获取默认值:)。

相关问题