如何使用基于类的视图动态设置模板名称?

Ben*_*ey4 14 django django-class-based-views

我已经搜索了基于类的视图Django文档(Django 1.4)的参考和主题,但我还没有发现任何提及此问题.如何使用基于类的视图动态设置模板名称?我正在寻找以下设置的基于类的等价物:

urls.py

from django.conf.urls.defaults import *
from mysite.views import dynamic

urlspatterns = patterns('', 
    url(r'^dynamic/(?P<template>\w+)/$', dynamic),)
)
Run Code Online (Sandbox Code Playgroud)

views.py

from django.shortcuts import render_to_response

def dynamic(request, template):
    template_name = "%s.html" % template 
    return render_to_response(template_name, {})
Run Code Online (Sandbox Code Playgroud)

Vla*_*tov 32

您需要定义返回template_names列表的get_template_names.

from django.views.generic import TemplateView

class DynamicTemplateView(TemplateView):

    def get_template_names(self):
        return ['%s.html' % self.kwargs['template']]
Run Code Online (Sandbox Code Playgroud)