Django基础模板查看方法

Django base template view method

我正在尝试用 Django 编写我的站点。我完成了页面和博客方面。现在我创建了一个 base.html 并且它有一个菜单。页面标题将在菜单上。

  <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')

最简单的解决方案是使用 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',
)