2014-10-31 303 views
1

我剛開始使用Django,並且一切正常,直到我嘗試將django與數據庫mysql連接爲止。 這裏是我的問題:Django objects.all()方法不返回任何數據

我此腳本添加到模型

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 

我上的index.html

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

和寫了這對views.py

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

返回值只是這個[]
(我已經開始mysql服務)

+0

有你創建RootWord的任何實例? – dazedconfused 2014-10-31 03:32:21

+0

是的,從ecs導入RootWord @dazedconfused – lloistborn 2014-10-31 03:43:56

回答

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請求並寫一個視圖來處理它。

+0

啊,它清除任何東西, 當我在models.py上創建一個類RootWord時,會在數據庫中有一個名爲ecs_rootword的表。所以,數據應該在那裏。 我所做的是導入另一張表,那是錯誤的一點。非常感謝您的回覆 – lloistborn 2014-10-31 04:02:47

+0

對不起,我無法理解你的意思;但是,您可以在Django shell中手動創建一些數據。我會編輯我的帖子,告訴你如何做到這一點。 – dazedconfused 2014-10-31 04:06:54

+0

是的,它的工作原理!謝謝@dazedconfused – lloistborn 2014-10-31 06:15:16

0

rootword = RootWord.objects.all() 

的rootword將是一個列表類型,其元素是RootWord情況,所以我覺得你應該在你的模板中使用一個for循環,像這樣:

{% for xxx in rootword %} 
    blah blah blah 
{% endfor %} 
+0

是的,這種方法也適用。謝謝! – lloistborn 2014-10-31 06:49:17