django-rest-framework:每个 ViewSet 可以有多个模板吗?

django-rest-framework: Can Ihave multiple templates per ViewSet?

我已经为我的模型创建了一个序列化程序和 ViewSet,并为列表视图添加了一个模板。要查看网页(模板),渲染顺序 类 必须正确,并且需要将 TemplateHTMLRenderer 添加到渲染器列表中。

现在这会导致问题,当想要浏览到特定记录时,如

/mymodel/5

在浏览器中,我也看到了列表视图。

目标是有 1 个 url 为 api (json) 或网页提供列表和详细信息视图。 (/mymodel = 列表,/mymodel/5 = 详细信息)

问题是:如何基于一个 ViewSet 拥有多个模板 (list/detail)?

解决方案是根据正在执行的操作覆盖 get_template_names 方法和 return 模板。

def get_template_names(self):
    if self.action == 'list':            
        return ['list.html']
    elif self.action == 'retrieve':            
        return ['details.html']