我有一些观点,每个人都必须像这样呈现动态菜单:
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, ...}))
但是我不得不为每个视图添加菜单属性。我可以通过哪种方式进行优化?
答案 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应该像那样工作。没有测试过。如果没有,请用它来制作字典。