2012-06-29 64 views
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, ...})) 

但它是incomfortable怎麼一回事,因爲我不得不菜單屬性添加到每個視圖。我可以通過哪種方式進行優化?

回答

2

這是context processors的用途。你已經使用了RequestContext,所以你只需要定義一個函數返回你的菜單並將其添加到TEMPLATE_CONTEXT_PROCESSORS

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應該只是這樣的。沒有測試過。如果沒有,請製作一本字典。