我开始使用Django,但在使用query_sets和for循环时遇到了一些麻烦。
我创建了一个模型,并在数据库中填充了一些条目。在views.py中,我已将这些条目的计数发送到模板中,并且可以HTML格式查看结果。
但是,当我发送这些条目的query_set列表时,我似乎无法访问它们,并且不确定原因。
这是view.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render
from website.models import Member
# Create your views here.
def index(request):
""" View for the homepage of the site """
num_mem = Member.objects.count()
mem_list = list(Member.objects.all())
context = {
'mem_list': mem_list,
'num_mem' : num_mem,
}
#render the HTML template index.html with the data
return render(request, 'index.html', context=context)
在index.html中,我尝试这样访问它们。
{% extends "base_generic.html" %}
{% block content %}
{{ num_mem }}
{% for member in mem_list %}
There are Members!
{% empty %}
Sorry can't find the members =/
{% endfor %}
{% endblock %}
返回的结果如图所示。
“ 6对不起,找不到成员= /”
所以我可以看到num_mem值,并且可以看到当前有6个值。
意图是遍历成员列表,并对每个值进行操作,例如
<a href='{{member.m_name.contact_email}}'> Contact {{member.m_name}} here...</a>
编辑:我已按照建议更改了mem_list,但这并不能解决问题。
更新的代码。
mem_list = Member.objects.all()
我正在使用Django 1.11和Python 2.7.5,在此先感谢您的帮助!
答案 0 :(得分:0)
请勿将Member.objects.all转换为列表。它必须返回一个QuerySet而不是一个列表。
因此从
删除列表 mem_list = list(Member.objects.all())
它必须是
mem_list = Member.objects.all()