这是我在本网站上的第一篇文章。我正在学习Django和Python,并尝试创建一个Quiztool。我在创建视图时遇到了问题,而且我很难理解如何优化Queryset中的数据。在我的详细信息视图中,我提出了这个错误:
/ 1 /
的TypeErrorcontext必须是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
答案 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)