Python 将Django视图类呈现为字符串或响应

Python 将Django视图类呈现为字符串或响应,python,django,Python,Django,我有一个模板,我希望能够直接提供服务,并嵌入到Django应用程序中的任意其他模板中。我尝试为它创建一个视图类,如下所示: class TemplateView(View): def get(self, request): context = self._create_context(request) return render_to_response('template.html', context) def get_string(self,

我有一个模板,我希望能够直接提供服务,并嵌入到Django应用程序中的任意其他模板中。我尝试为它创建一个视图类,如下所示:

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
我已将
get
连接到我的Django URL。但是,我还没有弄清楚如何实例化
TemplateView
,以便从其他视图调用
get\u string

一定有更好的方法来做这件事。想法


更新:我看到一些人谈论在内部发出请求并使用
response.content
,这将使我不必编写
获取字符串
方法。因此,也许更好的问题是:如何从另一个视图向
TemplateView
发出请求?

我将遵循django的CBV模式:它通过
调度
确定返回的方法。默认情况下,基于
请求.方法
。为什么不基于传递给
dispatch()
的任何其他参数

因此,子类dispatch并提供一种方法来确定是否返回
get\u 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)

您是如何将
get
连接到Django URL的
get
通常通过View的dispatch()方法调用。@DerekKwok我的意思是我连接了
TemplateView.as_View
,它在
get
请求时反过来调用
get
。这主意太棒了,谢谢!但是,这是否
返回self.as_字符串(请求)
正确?似乎应该读取
返回self.get\u字符串(请求)