2

我正在使用 django Publisher 示例,我想通过我的 list_publisher.html 模板列出数据库中的所有发布者,我的模板看起来像;

{% extends "admin/base_site.html" %}
{% block title %}List of books by publisher{% endblock %}
{% block content %}

<div id="content-main">
<h1>List of publisher:</h1>

{%regroup publisher by name as pub_list %}


{% for pub in pub_list %}


<li>{{ pub.name }}</li>

{% endfor %}
</div>
{% endblock %}

但是当我运行“ http://127.0.0.1:8000/list_publisher/ ”时,模板只会打印页面标题而没有错误!我究竟做错了什么?

4

2 回答 2

3

几点建议:

  • 检查您的 base_site.html 是否定义了一个{% block content %}{% endblock %}要由您的 my list_publisher.html 优化的部分
  • 检查列表的基数:{%regroup publisher by name as pub_list %}{{ pub_list|length }}. 那至少应该显示列表的长度。如果是'0'......你知道为什么它不显示任何东西
  • 在使用重组之前检查您的列表是否确实按名称排序,或者使用 a{% regroup publisher|dictsort:"name" by name as pub_list %}来确定

如果长度为“0”,则必须确保发布者已定义(已从数据库初始化),并进行了适当的排序。

换句话说,您是否在任何地方看到(在您的模板中或在定义的模板中):

publisher = Publisher.objects.all().order_by("name")

?
(同样,按名称排序很重要,以确保您的重组标签正常工作)

于 2008-11-08T08:53:36.667 回答
0

VonC的好答案。

查看 pub_list 的一种快速而肮脏的方法是粘贴[{{pub_list}}]您的模板。我把它放在方括号里,以防它是空的。顺便说一句,您可能会得到类似[,,,,,]. 这是因为对象引用包含在 <> 中,而您的浏览器正在运行 WTF?只需查看源代码,您就会看到完整的结果。

于 2008-11-08T17:38:43.597 回答