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