在每个视图中渲染动态菜单

时间:2012-06-29 21:16:43

标签: python django

我有一些观点,每个人都必须像这样呈现动态菜单:

def view1(request):
   return render_to_response('view1.html', 
                             RequestContext(request, {'menu': menu, 'a': a, ...}))

def view2(request):
   return render_to_response('view2.html', 
                             RequestContext(request, {'menu': menu, 'b': b, ...}))

def view3(request):
   return render_to_response('view3.html', 
                             RequestContext(request, {'menu': menu, 'c': c, ...}))

def viewN(request):
   return render_to_response('view4.html',
                             RequestContext(request, {'menu': menu, 'd': d, ...}))

但是我不得不为每个视图添加菜单属性。我可以通过哪种方式进行优化?

2 个答案:

答案 0 :(得分:2)

这是context processors的用途。您已经在使用RequestContext,因此您只需要定义一个返回菜单的函数并将其添加到TEMPLATE_CONTEXT_PROCESSORS

答案 1 :(得分:0)

根据您使用的django版本,您可能需要查看class based views甚至是基于类的generic views

否则你也可以这样做:

def menu_view(request, template='menu.html', **kwargs)
    return render_to_response(template, kwargs, 
           context_instance = RequestContext(request))

我认为kwargs应该像那样工作。没有测试过。如果没有,请用它来制作字典。