2015-04-04 78 views
1

我试图用Django编写我的网站。我完成了页面和博客两面。现在我创建一个base.html并且它有一个菜单。页面标题将出现在菜单上。Django基本模板查看方法

<ul class="nav navbar-nav"> 
    {% for page in pages %} 
      <li> 
      <a href="{% url 'page' page.slug %}">{{ page.title }}</a> 
      </li> 
    {% endfor %} 
    </ul> 

但是,如果我需要在基本模板上的页面,我应该在哪里调用页面的问题?在所有视图都是使用基础或共同的地方?

我view.py:

from django.shortcuts import render 
from django.shortcuts import get_object_or_404 
from django.http import HttpResponse 
from pages.models import Page 
# Create your views here. 


def mainpage(request): 
    try: 
     currentPage = Page.objects.get(title = "About Me") 
     return render(request, 'index.html', {'mainPage' : currentPage}) 
    except Page.DoesNotExist: 
     return HttpResponse('main page') 

def page(request, slug): 
    currentPage = get_object_or_404(Page, slug = slug) 
    return render(request, 'page.html', {'currentPage' : currentPage}) 
    #return HttpResponse('asdsad') 

回答

2

钍简单的解决方法是使用template context processor

myapp/context_processors.py

from myapp.models import Page 

def pages(request): 
    return {'pages': Page.objects.all()} 

然后这个处理器添加到TEMPLATE_CONTEXT_PROCESSORS设置:

TEMPLATE_CONTEXT_PROCESSORS = (
    ... 
    'myapp.context_processors.pages', 
) 
+0

yes上下文处理器是我的解决方案。感谢@catavaran – 2015-04-05 11:59:58