2024-09-27 02:25:43 发布
网友
这看起来很基本,但是,尽管我可以猜,如何在视图中创建视图,或者更准确地说,如何在动态模板中创建动态模板。你看,我有这些html块,其中包含某些东西的统计信息。如何创建一个返回其中一个框的视图,以便另一个视图可以将它们插入模板块中?只是有一个返回它的函数“可以”,还是我“必须”遵循相同的functionName(request)而不是像普通函数一样functionName(info1, info2, info3)。这似乎是一件很平常的事情,会有某种标准。你知道吗
functionName(request)
functionName(info1, info2, info3)
这正是custom template tags——特别是包含标记——的用途。你知道吗
如果我理解你的意思,你基本上是在说预先填充模板上下文。基本上,您希望在多个视图中呈现一个公共的上下文,但不希望在每个视图中重复您自己。使用基于函数的视图,最好的方法是简单地使用通用方法来处理以下问题:
def add_some_context(context={}): context['foo'] = 'bar' return context def view1(self, request): context = { 'something1': 'blah', } return render_to_response('template1.html', add_some_context(context), context_instance=RequestContext(request)) def view2(self, request): context = { 'something2': 'blah', } return render_to_response('template2.html', add_some_context(context), context_instance=RequestContext(request))
两个视图都有一个可以使用的foo上下文变量。通过使用基于类的视图,可以创建一个mixin类:
foo
class MyViewMixin(object): def get_context_data(self, **kwargs): context = super(MyViewMixin, self).get_context_data(**kwargs) context['foo'] = 'bar' return context class MyView1(MyViewMixin, DetailView): ... class MyView2(MyViewMixin, ListView): ...
当需要将其添加到实际模板时,可以让每个视图的模板从以某种方式实现foo上下文变量的模板继承。你知道吗
如果它应该应用于每个视图,那么上下文处理器更合适,但是如果它只适用于少数视图,那么这两种方法将很好地为您服务。你知道吗
这正是custom template tags——特别是包含标记——的用途。你知道吗
如果我理解你的意思,你基本上是在说预先填充模板上下文。基本上,您希望在多个视图中呈现一个公共的上下文,但不希望在每个视图中重复您自己。使用基于函数的视图,最好的方法是简单地使用通用方法来处理以下问题:
两个视图都有一个可以使用的
foo
上下文变量。通过使用基于类的视图,可以创建一个mixin类:当需要将其添加到实际模板时,可以让每个视图的模板从以某种方式实现
foo
上下文变量的模板继承。你知道吗如果它应该应用于每个视图,那么上下文处理器更合适,但是如果它只适用于少数视图,那么这两种方法将很好地为您服务。你知道吗
相关问题 更多 >
编程相关推荐