1

我有几个视图,每个人都必须像这样渲染动态菜单:

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, ...}))

但这很不舒服,因为我必须为每个视图添加菜单属性。我可以通过哪种方式进行优化?

4

2 回答 2

2

这就是上下文处理器的用途。您已经在使用 RequestContext,因此您只需要定义一个返回菜单的函数并将其添加到TEMPLATE_CONTEXT_PROCESSORS.

于 2012-06-29T21:32:46.333 回答
0

根据您使用的 django 版本,您可能需要查看基于类的视图,甚至是基于类的通用视图

否则,您还可以执行以下操作:

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

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

于 2012-06-29T21:25:33.857 回答