Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 循环的Django模板为空_Python_Django_Python 3.x_Django Views_Django 2.2 - Fatal编程技术网

Python 循环的Django模板为空

Python 循环的Django模板为空,python,django,python-3.x,django-views,django-2.2,Python,Django,Python 3.x,Django Views,Django 2.2,我试图在django中构建一个细节视图,但模板中没有显示任何内容 views.py class MyDetailView(DetailView): model = Article template_name = 'detail.html' detail.html {% extends 'base.html' %} {% load i18n %} {% endblock %} {% block content %} {% for item in itemlist %} {{i

我试图在django中构建一个细节视图,但模板中没有显示任何内容

views.py

class MyDetailView(DetailView):
    model = Article
    template_name = 'detail.html'
detail.html

{% extends 'base.html' %}
{% load i18n %}
{% endblock %}

{% block content %}

{% for item in itemlist %}
{{item.pk}}
{{item.title}}

{% empty %}
There are no items in this list

{% endfor %}
{% endblock %}

为什么此处的模板中没有显示任何内容?

您不会将名为
itemlist
的项目传递给
详细视图中的模板。在
列表视图
(看起来更合适)中,默认情况下它将使用名为
对象列表
的上下文变量。由于变量不存在,将解析为空字符串

如果要通过
项目列表
名称将
文章
的查询集传递给上下文,可以设置:

来自django.views.generic import ListView的

类MyDetailView(ListView):
模型=文章
模板名称='detail.html'

context\u object\u name='itemlist'
正如Willem在评论中告诉你的,你在一个细节视图中,所以你不需要for循环来迭代,你可以在模板中显示细节,比如:{{item.pk}

a
DetailView
没有
itemlist
传递给模板,(a
ListView
),但是我在/detail/5/'Article'对象处得到了这个错误
TypeError是不可编辑的请求方法:获取请求URL:http://127.0.0.1:8000/detail/5/
这可能是因为我的URL<代码>路径('detail/',views.MyDetailView.as_view(),name='detail'),
@Snowball:a
DetailView
项目当然不可编辑,因为一篇文章也不是一个iterables的集合。@Snowball:a如果你有一个
DetailView
,为什么要使用
{%for…%}
首先循环?但是当我使用
ListView
时,我得到了所有结果,而不仅仅是这一个
PK
我想要的结果
from django.views.generic import ListView

class MyDetailView(ListView):
    model = Article
    template_name = 'detail.html'
    context_object_name = 'itemlist'