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

时间:2018-03-01 11:15:24

标签: python django django-queryset

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

  

/ 1 /

的TypeError      

context必须是dict而不是QuerySet。

     

请求方法:GET请求网址: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   在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放入Dictonary,但我不知道该怎么做。

这是我的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

2 个答案:

答案 0 :(得分:2)

您在这里返回question而不是回复question_dict

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

应该是

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

答案 1 :(得分:0)

将您需要的所有内容放入&#34; question_dict&#34;字典 然后通过这样渲染:

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