Renderice la clase de vista Django a una cadena o respuesta

Tengo una plantilla que quiero poder servir directamente e incrustar en otras plantillas arbitrarias en mi aplicación Django. Intenté crear una clase de vista para que se vea así:

class TemplateView(View): def get(self, request): context = self._create_context(request) return render_to_response('template.html', context) def get_string(self, request): context = self._create_context(request) return render_to_string('template.html', context) def _create_context(self, request): context = {} # Complex context initialization logic... return context 

He cableado get a mis URL de Django. Sin embargo, no he podido averiguar cómo crear una instancia de TemplateView para poder llamar a get_string desde otras vistas.

Debe haber una mejor manera de hacer esto. Ideas?

Actualización: he visto a algunas personas hablar sobre realizar una solicitud internamente y usar response.content , lo que me evitaría tener que escribir el método get_string . Entonces, quizás una mejor pregunta es: ¿Cómo hago una solicitud a TemplateView desde otra vista?

Seguiría en el patrón CBV de django: determina a través del dispatch qué método devolver. Por defecto basado en request.method . ¿Por qué no basarse en cualquier otro argumento pasado a dispatch() ?

Entonces, get_string subclases y déle una forma de determinar si devolver o no get_string .

 def dispatch(self, request, *args, **kwargs): if 'as_string' in kwargs: return self.get_string(request) return super(TemplateView, self).dispatch(request, *args, **kwargs) response = TemplateView.as_view()(request, as_string=True)