Django objects.all() 方法不返回任何数据
我刚开始学习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请求,并写一个视图来处理这些请求。