<p>如果我理解你的意思,你基本上是在说预先填充模板上下文。基本上,您希望在多个视图中呈现一个公共的上下文,但不希望在每个视图中重复您自己。使用基于函数的视图,最好的方法是简单地使用通用方法来处理以下问题:</p>
<pre><code>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))
</code></pre>
<p>两个视图都有一个可以使用的<code>foo</code>上下文变量。通过使用基于类的视图,可以创建一个mixin类:</p>
<pre><code>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):
...
</code></pre>
<p>当需要将其添加到实际模板时,可以让每个视图的模板从以某种方式实现<code>foo</code>上下文变量的模板继承。你知道吗</p>
<p>如果它应该应用于<em>每个</em>视图,那么上下文处理器更合适,但是如果它只适用于少数视图,那么这两种方法将很好地为您服务。你知道吗</p>