有没有办法逐行检查简单的Django查询?

时间:2012-07-22 11:56:53

标签: django validation

继续学习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在这两行之间没有任何内容。

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

同样,我想弄清楚如何自己做这个,但我正在寻找可以帮助我知道的工具哪里我搞砸了这个:有没有像Inspect Element这样的东西这对Django有用,所以我可以看到哪些行正在寻找和返回数据,就像我可以看到哪些CSS行是使用Inspect Element而不活动?

4 个答案:

答案 0 :(得分:3)

在这种情况下,

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

答案 1 :(得分:1)

我希望你知道python manage.py shell给你像python一样的shell,但更多好东西,如标签完成或选项。在视图中尝试不同的查询/ python代码很有用。

正如OndrejSlinták所说,django调试工具栏对解决各种问题非常有帮助。

答案 2 :(得分:1)

这是语法问题。您可能会在某个地方放置一个机器人列表,对吗?当你把它传递给你的模板时,我会猜测并假设你正在调用它robots

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

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

希望有所帮助。

答案 3 :(得分: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>