0

致力于学习 Django,目前(正在尝试)有一个模板来创建我创建的“机器人”列表。我不是在寻求具体问题的帮助——我试图自己解决这个问题——但我想知道我是否能找出我失败的地方。

查找看起来像这样。目前,在模板中,它什么都不返回(并且数据库中肯定有两个“机器人”:

<p>Robotz!</p>
    {% for bot in robots.all %}
    <p>{{bot.name}}&nbsp;//{{bot.serialnumber}}</p>
    {% endfor %}
<p>And that's a list of robots.</p>

我不知道是否......
- “robots.all”在第二行中查找错误的位置,
- “for bot in”在第二行中是错误的语法,
或者
- “bot.name”和“bot.serialnumber”是在第三行打印的错误值。

现在,模板什么也没返回:它直接来自“Robotz!” “这是一个机器人列表。” 在提供的 HTML 页面上。在 Chrome 中检查元素在这两行之间没有给我任何东西。

有没有办法找出我做错了什么?不特定于这个实例,但是我可以看到我是否在错误的地方寻找,或者输出错误的输出。

再次,我想弄清楚如何自己做到这一点,但我正在寻找可以帮助我知道我在哪里搞砸的工具:是否有类似 Inspect Element 的东西适用于 Django,所以我可以看到哪些行是/不寻找和返回数据,就像我可以使用 Inspect Element 看到哪些 CSS 行是活动的和不活动的?

4

4 回答 4

3

在这种情况下, django-debug-toolbar会帮助你很多。它向您显示所有已执行的查询。它不会逐行显示查询,但它会让您大致了解应用程序中发生的情况。

于 2012-07-22T12:16:41.417 回答
1

我希望你知道python manage.py shell它给你提供了类似于 shell 的 python,但也提供了更多的东西,比如 tab 完成或选项。在您的视图中尝试不同的查询/python 代码很有用。

正如 Ondrej Slinták 所建议的,django 调试工具栏对于解决各种问题非常有帮助。

于 2012-07-22T12:25:02.603 回答
1

这是语法问题。您可能会在某个地方在您的视图中汇总一个机器人列表,对吗?我将大胆猜测并假设您在将它robots传递给模板时调用它。

在这种情况下,您的语法应该是{% for bot in robots %}

看看一些基本的 Django 教程或 Django 的文档——他们将解释像这样的事情在 Django 中是如何工作的。

希望有帮助。

于 2012-07-22T17:01:19.417 回答
0

它可能是这样的

views.py

from django.shortcuts import render
from main.models import Robot


def robots(request):
    return render(request, 'robots.html', {'robots': Robot.objects.all()}

templates/robots.html

<p>Robotz!</p>
{% for bot in robots %}
    <p>{{ bot.name }}&nbsp;//{{ bot.serialnumber }}</p>
{% endfor %}
<p>And that's a list of robots.</p>
于 2012-07-23T08:14:41.613 回答