我写了一个小的django自定义模板标签(inclustion_tag),我想用它来显示一个html表格,显示我的VehicleBrand和VehicleModel模型中的列表车辆品牌和型号,但模板标签似乎不是将变量从模板标记中的数据库查询传递给html。我是django的新手,所以如果我错过了一些明显的东西,请告诉我。任何帮助都将不胜感激。
这是我的模板标记,它位于我的应用程序下的模板目录中。模板标记目录包含_ init _。py
from django import template
from castester.models import VehicleBrand
register = template.Library()
@register.inclusion_tag("brand_model_select.html")
def brand_model_select():
brand_list = VehicleBrand.objects.all()
return {'brand_list':brand_list}
这是我的model.py
from django.db import models
class VehicleBrand(models.Model):
description = models.CharField(max_length=100)
code = models.SlugField(primary_key=True)
这是我的brand_model_select.html
{% load castest_extras %}
<table>
{% for brand in brand_list %}
<tr>
<td>{{ brand.code }}</td>
<td>{{ brand.description }}</td>
</tr>
{% endfor %}
</table>
这是urls.conf行,我从基于类的视图调用我的html。
url(r'^$', TemplateView.as_view(template_name='brand_model_select.html'))
以下是模型查询的输出,以证明正在从数据库中检索数据。
>>> from castester.models import VehicleBrand
>>> VehicleBrand.objects.all().values()
[{'code': u'1', 'description': u'FORD'}, {'code': u'2', 'description': u'HOLDEN'}]
使用以下来源呈现空白页面。查询输出从include_tag传递到哪里?
<table>
</table>
答案 0 :(得分:1)
您无意直接呈现brand_model_select.html
。相反,您应该从其他模板调用模板标记:
# in url conf
`url(r'^$', TemplateView.as_view(template_name='homepage.html'))`
# in homepage.html
{% load castest_extras %}
{% brand_model_select %}
包含标记的要点是您可以将其包含在另一个视图中。你现在正在做什么根本不使用模板标签;相反,它只是呈现brand_model_select.html
完全忽略标记。