在模板上呈现列表

时间:2014-01-02 09:16:57

标签: django django-templates django-views

我正在尝试使用模型中的数据在模板中创建一些图形。我正在做一个调查应用程序。每项调查都有一些问题,每个问题都有一些答案。用户回答每个问题。所以我算上每个问题的答案。我想在我的模板中绘制这些答案。

我正在使用此视图来计算数据并渲染到模板:

def SurveyResults(request, id):
    user = request.user
    if user.is_authenticated():
        quest_survey = Survey.objects.get(id=2)
        quests = quest_survey.questions()
        graphic = {}
        graphic_id = 1
        if quests:
            for quest in quests: 
                a1 = AnswerSelect.objects.filter(question_id=quest.id, body = "answer 1").count()
                a2 = AnswerSelect.objects.filter(question_id=quest.id, body = "answer 2").count()
                a3 = AnswerSelect.objects.filter(question_id=quest.id, body = "answer 3").count()
                a4 = AnswerSelect.objects.filter(question_id=quest.id, body = "answer 4").count()
                graphic[str(graphic_id)] = [['answer1', a1], ['answer2', a2], ['answer3', a3], ['answer4', a4] ]
                graphic_id += 1

            return render(request, 'results.html', locals())
        else:
            msg = "A Survey não possui questões"
            return HttpResponseRedirect('profile.html')
    else:
        msg = "Usuario ou senha digitados incorretamente"
        return HttpResponseRedirect('home.html', {'msg': msg})

问题是,如何在模板中获取图形[“1”],...,图形[“n”]的值?

我正在尝试这样做:

{% if graphic %}
        {% for g in graphic %}
            {% for item in g %}
                {{ item }}
            {% endfor %}

        {% endfor %}
{% endif %}

但不是数据,我只得到id的值:1,2,...,n

1 个答案:

答案 0 :(得分:2)

使用items功能在模板中显示字典的键和值:

{% for key, value in graphic.items %}
    {% for item in value %}
        {{ item }}
    {% endfor %}
{% endfor %}