python - Django TypeError 对象不可迭代

标签 python django

我尝试在 django 中的 html 模板中显示模型数据。

我的模型:

class Author(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    date_of_birth = models.DateField(blank=True, null=True)
    date_of_death = models.DateField(blank=True, null=True)

    def get_absolute_url(self):
        return reverse('author_detail', args=[str(self.id)])

    class Meta():
        ordering = ['first_name', 'last_name']

    def __str__(self):
        return f'{self.first_name} {self.last_name}'

我的观点:

def author_detail_view(request, pk):
    author = get_object_or_404(Author, pk=pk)
    return render(request, 'author_detail.html', context={'author_detail': author})

我的网址:

 path('author/<int:pk>', views.author_detail_view, name='author_detail')

And My Templates View:
{% extends 'base.html' %}

{% block content %}
<h1>Author Detail</h1>
    {% for author in author_detail %}
<ul>
    <li>Name: {{ author.first_name }} {{ author.last_name }}</li>
    <li>Date of Birth: {{ author.date_of_birth }}</li>
</ul>
    {% endfor %}
{% endblock %}

但问题是,它显示错误:

/author/2 处出现类型错误

“作者”对象不可迭代

请求方式:GET 请求网址:http://127.0.0.1:8000/author/2 Django 版本:2.1.5 异常类型:TypeError 异常值:

“作者”对象不可迭代

异常位置:渲染中的/home/pyking/.local/lib/python3.6/site-packages/django/template/defaulttags.py,第165行 Python 可执行文件:/usr/bin/python3 Python版本:3.6.7

最佳答案

author_detail 是一个单个 Author 对象,因此迭代它是没有意义的。您可以迭代哪些元素?

因此您可以将其呈现为:

{% extends 'base.html' %}

{% block content %}
<h1>Author Detail</h1>
<ul>
    <li>Name: {{ <b>author_detail</b>.first_name }} {{ <b>author_detail</b>.last_name }}</li>
    <li>Date of Birth: {{ <b>author_detail</b>.date_of_birth }}</li>
</ul>
{% endblock %}

关于python - Django TypeError 对象不可迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54972280/

相关文章:

创建嵌套字典的 Pythonic 方式

python - 使用特定信号终止通过 asyncio 运行的外部程序

python - Django:创建自定义模板标签 -> ImportError

python - 在生产模式下从服务站点在 Django 中设置静态文件

django - 使用 MultipleChoiceFilter 时动态重新加载选择

python - 在 Python 中一次检查大量 IMAP 帐户

Python Plotly 多重直方图与平均线

python - 上传大小限制(以字节为单位)(django)

python - 从 xml 生成 django 模型

python - Django - 如何保存我的散列密码