Django 在模板中打印 sqlite 数据库数据
Django print sqlite db data in template
我是 django 的新手,在将我的数据库数据打印到我的页面上时遇到了一些困难。如果能得到帮助,我将不胜感激 - 我知道我在做一些愚蠢的事情,但我有点碰壁了。
我设置了数据库,我可以毫无问题地访问其中的数据:
python manage.py shell
>>> 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] 并且用它搞砸了很多但没有运气
有什么想法吗?
干杯,亚瑟
你做错了,你没有在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 %}
我是 django 的新手,在将我的数据库数据打印到我的页面上时遇到了一些困难。如果能得到帮助,我将不胜感激 - 我知道我在做一些愚蠢的事情,但我有点碰壁了。
我设置了数据库,我可以毫无问题地访问其中的数据:
python manage.py shell
>>> 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] 并且用它搞砸了很多但没有运气
有什么想法吗?
干杯,亚瑟
你做错了,你没有在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 %}