2017-06-02 15 views
0

我想在我的django應用中創建一個菜單,該菜單根據正在查看的頁面而發生變化。我正在嘗試爲此使用Django簡單菜單。 我很努力讓URL參數在我的menus.py中可訪問。 這是我迄今爲止的代碼,並希望用來自我的URL參數的參數替換「公司」字符串。這是可能的還是在我的視圖中創建菜單並將其分配給上下文更好?在django-simple-menu中使用上下文參數

hier = Hierachy.get_root_nodes().filter(company__slug= 'company') 
for site in hier: 
children = list() 
for plant in site.get_children(): 
    children.append(MenuItem(plant.name, 
      reverse('pha:companyHierarchy', args=[plant.company.slug, plant.slug,]), 
      weight=10, 
      icon="user")) 
Menu.add_item("study", MenuItem(site.name, reverse('pha:companyHierarchy', args=[site.company.slug, site.slug,]), 
             weight=10, 
             icon="tools", 
             children=children)) 

回答

0

經過一番討論後,我發現了一些中間件的解決方案。

class SimpleMiddleware(object): 

    def process_view(self, request, func, args, kwargs): 
     Menu.items.clear() 
     hier = Hierachy.get_root_nodes().filter(company__slug= kwargs['slug']) 
     for site in hier: 
      children = list() 
      for plant in site.get_children(): 
       children.append(MenuItem(plant.name, 
       reverse('pha:companyHierarchy', args=[plant.company.slug, plant.slug,]), 
       weight=10, 
       icon="user")) 
      Menu.add_item("study", MenuItem(site.name, reverse('pha:companyHierarchy', args=[site.company.slug, site.slug,]), 
              weight=10, 
              icon="tools", 
              children=children)) 

    return None 
相關問題