【问题标题】:How do I list items in my Django models?如何在我的 Django 模型中列出项目?
【发布时间】:2010-09-21 10:21:46
【问题描述】:

正在使用 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/”时,模板只会打印页面标题而没有错误!我做错了什么?

【问题讨论】:

  • 刚刚添加了发布者定义和 order_by 建议

标签: django django-templates


【解决方案1】:

VonC 的回答很好。

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

【讨论】:

    【解决方案2】:

    一些建议:

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

    如果长度为 '0',则必须确保发布者已定义(已从数据库初始化),并且已正确排序。

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

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

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

    【讨论】:

    • 长度为0,但是当我通过管理界面查看时它有4条记录??
    • 这意味着当您到达此页面生成时发布商未知/未声明
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 2023-03-20
    • 1970-01-01
    • 2010-10-02
    • 2019-04-22
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多