继续学习Django,目前(尝试)有一个模板,可以创建我创建的“机器人”列表。我不是在寻找有关具体问题的帮助 - 我试图自己解决这个问题 - 但我想知道我是否可以找出哪里我失败了。
查找看起来像这样。目前,在模板中,它什么都不返回(数据库中肯定有两个“机器人”:
<p>Robotz!</p>
{% for bot in robots.all %}
<p>{{bot.name}} //{{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而不活动?
答案 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 }} //{{ bot.serialnumber }}</p>
{% endfor %}
<p>And that's a list of robots.</p>