2014-07-03 44 views
0

我正在建设一个项目使用django,因为它使我能够在更少的时间内做更多,但我遇到了一个问题,我已经创建了一个菜单,如下面的代码所示,如​​果我在索引页面,但我得到如果运行,如果我在任何其他页面的其他部分,我认为这是因为app_list不存在。我想要做的是有一个始终存在于侧栏中的动态列表模型,以便我可以从任何地方到任何地方。不知道如何去做这件事,因为它在我的base.html文件中的每个页面上都能正常工作,因为我希望在每个页面上都可以这样做。Django Python管理员常量侧菜单

<aside class="sidebar"> 
    <div id="leftside-navigation" class="nano"> 
     <ul class="nano-content"> 
      <li class="active"> 
       <a href="index.html"><i class="fa fa-dashboard"></i><span>Dashboard</span></a> 
      </li> 
      {% if app_list %} 
       {% for app in app_list %} 
        <li class="sub-menu"> 
        {% for model in app.models %} 
         <a href="javascript:void(0);"><i class="fa fa-cogs"></i><span>{{ model.name }}</span><i class="arrow fa fa-angle-right pull-right"></i></a> 
          <ul> 
           {% if model.admin_url %} 
            <li><a href="{{ model.admin_url }}">View</a> 
            </li> 
           {% endif %} 

           {% if model.add_url %} 
            <li><a href="{{ model.add_url }}">{% trans 'Add' %}</a> 
            </li> 
           {% endif %} 
          </ul> 
         {% endfor %} 
         </li> 
        {% endfor %} 
       {% else %} 
         <p>{% trans "You don't have permission to edit anything." %}</p> 
       {% endif %}  
     </ul> 
    </div> 
</aside> 

编辑:

好只是为了更新问题,hopefuly更清楚我所寻找的是一些对于像mezzanine报价车型持续导航点击链接,你可能会得到更好的关于我在做什么后的想法。

+0

您可以编写一个上下文处理器来添加任何内容:https://docs.djangoproject.com/en/dev/ref/templates/api/#writing-your-own-context-processors – allcaps

+0

我已阅读过关于它们的内容,但不要真的不知道如何使用它们,Django文档看起来很混乱。 – bobthemac

回答

1

docs

编写您自己的上下文处理器
上下文处理器具有非常 简单的接口:这只是一个Python函数,它接受一个参数, 一个HttpRequest对象,并返回一个将字典添加到 模板上下文中。每个情境处理器必须返回一个字典。

创建context_processors.py文件,并添加:

def Foo(request): 
    return { 'bar': 'Ni!' } 

自定义背景处理器可以在你的代码库的任何地方。所有 Django关心的是您的自定义上下文处理器是由您的TEMPLATE_CONTEXT_PROCESSORS设置指向的 。

在settings.py你的背景处理器添加到TEMPLATE_CONTEXT_PROCESSORS

TEMPLATE_CONTEXT_PROCESSORS += ('context_processors.Foo',) 

比任何模板,你可以这样做:

{{ bar }} 

它会呈现:

Ni! 
+0

好吧,让更多的感觉只是得出如何获得app_list在那里我认为它有一个上下文处理器 – bobthemac

+0

更多的上下文处理器的例子,只看到Django代码:https://github.com/django/django /blob/master/django/core/context_processors.py。您也可以搜索Django代码来了解如何构建app_list或其他任何东西。 – allcaps

+0

https://djangosnippets.org/snippets/1921/ – allcaps