Django:/ 1 / context下的TypeError必须是dict而不是QuerySet

问题描述 投票:1回答:2

这是我在本网站上的第一篇文章。我正在学习Django和Python,并尝试创建一个Quiztool。我在创建视图时遇到了问题,而且我很难理解如何优化Queryset中的数据。在我的详细信息视图中,我提出此错误:

TypeError at / 1 /

context必须是dict而不是QuerySet。

请求方法:GET请求URL:http://192.168.188.146:8080/1/ Django版本:2.0.1异常类型:TypeError异常值:

context必须是dict而不是QuerySet。

异常位置:/home/flo/Django2.0/lib/python3.5/site-packages/django/template/context.py in make_context,第274行Python可执行文件:/home/flo/Django2.0/bin/python Python版本:3.5.3 Python路径:

['/home/flo/Django2.0/quiztool', '/home/flo/Django2.0/lib/python35.zip', '/home/flo/Django2.0/lib/python3.5', '/home/flo/Django2.0/lib/python3.5/plat-x86_64-linux-gnu', '/home/flo/Django2.0/lib/python3.5/lib-dynload', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/home/flo/Django2.0/lib/python3.5/site-packages']

服务器时间:周四,2018年3月1日11:00:35 +0000

我知道我必须将Queryset放入字典但我不知道如何做到这一点。

这是我的views.py:

def index(request):
    latest_survey_list = Survey.objects.order_by('survey_id')[:5]

    context = {
        'latest_survey_list': latest_survey_list
    }
    return render(request, 'fragen/index.html', context)

def detail(request, survey_id):

    question = Survey.objects.get(pk=survey_id).question.all().values()
    question_dict = {
        'question': question
    }

    return render(request, 'fragen/detail.html', question)

这里是detail.html:

{% if question %}
    <ul>
    {% for x in question %}
    <li>{{ x.question_text }}</li>
    {% endfor %}
    </ul>
{% else %}
    <p>No questions are available.</p>
{% endif %} 

如果你需要进一步的信息来帮我问问。

非常感谢提前和我的问候flotzen

python django django-queryset
2个回答
2
投票

你在这里返回question而不是dic question_dict

return render(request, 'fragen/detail.html', question)

它应该是

return render(request, 'fragen/detail.html', question_dict)

0
投票

将您需要的所有内容放在模板中的“question_dict”dict中,然后通过以下渲染:

return render(request, 'fragen/detail.html', context=question_dict)
© www.soinside.com 2019 - 2024. All rights reserved.