Django objects.all() 方法不返回任何数据

1 投票
2 回答
2327 浏览
提问于 2025-04-30 19:19

我刚开始学习Django,一切都还不错,直到我尝试把Django和MySQL数据库连接起来。现在我遇到了问题:

我在模型文件里添加了这个代码:

class RootWord(models.Model):
    root_id = models.IntegerField(primary_key=True, null=False, unique=True, max_length = 10)
    rootword = models.CharField(null=False, max_length = 20)
    rootword_pos = models.CharField(null=False, max_length = 20)

    def __unicode__(self):
        return self.rootword

然后我在views.py文件里写了这个:

def select_from_db(request)
    rootword = RootWord.objects.all()
    return render(request, 'ecs/index.html', {'rootword': rootword})

在index.html文件里:

<html><body>{{ rootword }}</body></html>

但是返回的结果就是这个 []
(我已经启动了MySQL服务)

暂无标签

2 个回答

0

这里

rootword = RootWord.objects.all() 

根词(rootword)将会是一个列表,里面的元素是根词实例(RootWord)。所以我觉得你应该在你的模板中使用一个循环,像这样:

{% for xxx in rootword %}
    blah blah blah
{% endfor %}
1

我觉得你的数据库里可能没有数据。

你可以通过使用Django的命令行工具来确认这一点:

python manage.py shell

然后

>>> from ecs import RootWord
>>> RootWord.objects.all()

看看有没有输出结果。

补充一下:

你可以在Django的命令行工具里手动创建一些数据:

>>> rootword = RootWord(root_id=1, rootword="rootword", rootword_pos="wootword_pos")
>>> rootword.save()

这样之后,你应该能看到一些输出。此外,如果你想在网页上创建数据,你需要发送一些POST请求,并写一个视图来处理这些请求。

撰写回答