Django TypeError对象不可迭代

用户名

我试图在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处的TypeError

“作者”对象不可迭代

请求方法:GET请求URL: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: {{ author_detail.first_name }} {{ author_detail.last_name }}</li>
    <li>Date of Birth: {{ author_detail.date_of_birth }}</li>
</ul>
{% endblock %}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章