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