2015-04-14 48 views
2

我是新來的Django,我有點困難讓我的數據庫數據打印到我的頁面上。我會很感激幫助 - 而且我知道我在做一些愚蠢的事情,但我有點碰壁。Django在模板中打印sqlite數據庫數據

我有DB設置,我可以訪問其中的數據沒有任何問題:

蟒蛇manage.py殼

>>> from homepage.models import User, Oncall 
>>> user_data = User.objects.all() 
>>> names = [] 
>>> for x in user_data: 
... names.append(x.first_name + ' ' + x.last_name) 
>>> names 
[u'Arthur Mencke', u'John Doe'] 

所以後來在我的views.py我有:

from django.http import HttpResponse 
from django.shortcuts import render, get_object_or_404, render_to_response 
from django.utils import timezone 
import datetime 
from homepage.models import User, Oncall 
from django.template import RequestContext, loader 
from django.template import Template, Context 
from django.template.defaulttags import register 

def index(request): 
     now = timezone.now() 
     users = User.objects.all() 
     return render(request, 'homepage/index.html') 

def getUsers(request): 
     users = User.objects.all() 
     name_list = [] 
     for x in users: 
       name_list.append(x.first_name + ' ' + x.last_name) 
     return name_list 

在我的index.html文件:

{% if name_list %} 
     {% for x in name_list %} 
       {{ name_list.x }} 
     {% endfor %} 
{% else %} 
     <b>no users</b> 
{% endif %} 

{{name_list|length}} 

與瀏覽器這將始終顯示:

no users 0 

我也試過NAME_LIST [x]和它周圍打亂,沒有運氣

任何想法頗有幾分?

乾杯,亞瑟

+0

您需要將'users'或'name_list'的上下文傳遞給模板 – Anzel

回答

4

你做錯了,你是不是傳遞上下文中index看來,拿這個例子:

def index(request): 
    users = User.objects.all() 
    return render(request, 'homepage/index.html', {'users': users}) # notice here we are adding our context to be used in template, you need pass it explicitly 

然後在index.html

{% for user in users %} 
     <span>{{ user.first_name }} {{ user.last_name }}</span> 
{% endfor %} 
+0

謝謝Aamir!那就是訣竅。事後看起來很簡單,但是django模板語言和文件之間的關係需要一點時間才能適應。 –