【发布时间】:2014-04-29 15:31:49
【问题描述】:
我有许多扩展 base.html 的模板。我希望 base.html 模板容纳我的全局导航,并使全局导航中的文本和链接基于模型 Division(即模型中的 CharField 将用作按钮全局导航中的文本,id 将用于构建 URL)。我认为标签可能会起作用,但我最终得到的是这个(是的,我是 Django 和 Python 的新手):
current_tags.py
from django import template
# Import your model
from libs.display.models import Division
from django.db import models
register = template.Library()
@register.simple_tag
def do_get_divisions(self):
d = Division.objects.all()
mylist = []
for each in d:
mylist.append(str(each.DivisionValue))
return my list
此时我正在尝试获取要打印的每个对象中的文本值,因为我无法获取或使用模板中的对象,如下所示。
base.html
<!DOCTYPE html>
<html>
<head>
{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}style.css" />
</head>
<body>
{% load current_tags %}
<p>{% do_get_divisions "" %}</p> **THIS ACTUALLY PRINTS mylist**
{% for each in do_get_divisions %} **THIS DOESN'T PRINT ANYTHING**
<p>{{ each }}</p>
{% endfor %}
{% block content %}
{% endblock %}
</body>
</html>
我确信有更好的方法可以基于 Django 中的模型进行全局导航。我基本上想获取所有 Division 对象并将它们放入 <ul> 中,以用作我在 base.html 中的全局导航。我对 Django 不太熟悉,但我的 views.py 对我没有帮助,因为我正在渲染其他模板,而不是 base.html,它们正在扩展 base.html。值得一提的是,这里有一个 views.py,其中 /display/info.html 模板扩展了 base.html:
# Create your views here.
from django.http import HttpResponse
from apps.pulldata.models import Data
from django.shortcuts import render, get_object_or_404
from django.http import Http404
def info(request, group_id):
group = get_object_or_404(Data, pk=group_id)
s = group.XInGroup.all()
return render(request, 'display/info.html', {'Group': group, 's': s})
【问题讨论】:
标签: django django-models django-templates django-views django-tagging