Django的:观点

Django的:观点

问题描述:

内查看这看起来非常简单,但是,虽然我可以猜到,你如何让一个视图中的视图,或者更准确地说,是一个动态的模板内的动态模板。你看,我有这些块的HTML包含某些事情的统计资料。我将如何创建一个返回其中一个框的视图,以便另一个视图可以将它们插入到模板块中?它是“确定”,只是它返回它的功能,还是我“必须”遵循相同functionName(request)的事情,而不是functionName(info1, info2, info3)像一个正常的功能。这看起来很普遍,会有某种标准。Django的:观点

+0

查看自定义模板标签。 – 2012-08-03 19:39:33

如果我理解你,你基本上是在谈论预填充模板内容。基本上,你需要在许多视图中存在一个共同的上下文环境,但是你不想为每个视图重复自己。使用基于函数的观点,最好的办法是简单地具有泛型方法,它利用这个护理:

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上下文变量,然后。与基于类的意见做,你可以创建一个混合类:

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 - 尤其是包含标签 - 是。