Django基础模板视图方法

时间:2015-04-04 21:51:57

标签: python django python-3.x django-templates django-views

我正在尝试用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')

1 个答案:

答案 0 :(得分: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',
)