2017-06-22 46 views
0

我試圖讓一個非常簡單的博客應用程序,所有的帖子在我的數據庫一次顯示。然而,我的四個職位呈現在頁面上Django:從數據庫調用對象返回<Queryset [0123]>

<QuerySet [<Post: Test content>, <Post: Second test post>, <Post: Third time's the charm>, <Post: Here is a post.>]> 

我也不能任意第二變量傳遞給HTML模板像我將燒瓶:的testvar不會顯示在所有,即使它是在html模板中。這些問題是相關的嗎?如何在頁面上獲得多個變量,以及如何使帖子看起來像普通文本?

views.py:

1 from django.shortcuts import render 
    2 from django.http import HttpResponse 
    3 
    4 from .models import Post 
    5 
    6 def post(request): 
    7  testvar = "TEST VARIABLE PLZ IGNORE" 
    8  post_list = Post.objects.order_by('id') 
    9 
10  return render(request, 'posts/main.html', 
11    {'post': post_list}, {'testvar': testvar}, 
12 ) 

models.py:

1 from django.db import models 
    2 
    3 class Post(models.Model): 
    4  content = models.CharField(max_length = 200) 
    5 
    6  def __str__(self): 
    7   return self.content 

main.html中:

1 <head>              
    2 <h1>{{ post }}</h1> 
    3 
    4 </head> 
    5 
    6 <body> 
    7 {{ testvar }} 
    8 {% for i in post_list %} 
    9 <li>i</li> 
10 {% endfor %} 
11 </body> 

我是新來的Django,所以我會很感激的任何其他建議或批評。謝謝。

回答

3

首先,你需要通過一個單一字典render

return render(request, 'posts/main.html',        
    {'post': post_list, 'testvar': testvar}, 
) 

你的模板不會給你你要求的輸出,因爲你從來沒有表現出任何post_list作爲一個整體,或內容循環中的每個元素。想必你的意思是:

{% for i in post_list %} 
    <li>{{ i }}</li> 
{% endfor %} 

編輯作爲Sayse在評論中指出,你有變量名之間的不匹配。您正在將帖子列表傳遞爲post,因此當您在模板中執行{{ post }}時,您將打印整個列表。根本沒有名爲post_list的變量,因此模板底部的循環甚至不會執行。

您應該使用一致的名稱; post_list似乎更合適。

return render(request, 'posts/main.html',        
    {'post_list': post_list, 'testvar': testvar}, 
) 
+0

這個工作!非常感謝。 –

2

在你views.py改變返回statment到:

return render(request, 'posts/main.html', {'post': post_list, 'testvar': testvar}) 

由於呈現的第三個參數只需要一個字典。此外,在爲了使帖子在你的模板,你應該打印帖子爲

{% for i in post_list %} 
    <li>{{ i }}</li> 
{% endfor %} 
1

context應該與儘可能多的關鍵單詞典:值對,因爲你需要

6 def post(request): 
    7  testvar = "TEST VARIABLE PLZ IGNORE" 
    8  post_list = Post.objects.order_by('id') 
    9 
10  return render(request, 'posts/main.html', 
11    {'post': post_list, 'testvar': testvar}, 
12 
相關問題