2015-04-04 6 views
1

Я пытаюсь написать свой сайт с Django. Я закончил страницы и блоги. Теперь я создаю base.html и у него есть меню. И название страницы будет в меню.Django base template view метод

<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

Th простым решением является использование 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

Да, контекстные процессоры - это решение для меня. спасибо @catavaran –