TypeError:无法在 Django 视图函数中解压不可迭代的 int 对象

Posted

技术标签:

【中文标题】TypeError:无法在 Django 视图函数中解压不可迭代的 int 对象【英文标题】:TypeError: cannot unpack non-iterable int object in Django views function 【发布时间】:2019-04-14 00:34:56 【问题描述】:

以下是我在 URL.py、views.py 和 html 页面中的代码。但是,它返回错误:TypeError: cannot unpack non-iterable int object。

urlpatterns = [
    path('', views.blogs_home, name='blogs'),
    path('<int:id>', views.single_blog, name='detailed_view'),

]

我正在尝试在列表视图中捕获帖子博客的 id,以使用 id 查询从数据库中获取博客对象。以下是我的视图代码。

def single_blog(request,id):
   blog_single = Blogs.objects.get(id)
   context = 'blog_single': blog_single
   template = 'blog_home.html'

   return render(request, template, context)

但是,正如我所提到的,它返回上述错误。

谁能解释我做错了什么

【问题讨论】:

【参考方案1】:

您应该在.filter(..).get(..) 调用中指定参数的名称:

def single_blog(request, id):
   blog_single = Blogs.objects.get(id=id)
   context = 'blog_single': blog_single
   template = 'blog_home.html'

   return render(request, template, context)

我还建议将您的变量重命名为其他名称(因此在urls.pyviews.py 中),因为id 是一个内置函数,现在一个局部变量正在“隐藏”这个内置函数。

【讨论】:

谢谢你,Willem 和你的建议。谢谢,伙计。 你好威廉。我已将 urls.py 和 views.py 中的 id 更改为 post_id。但是,出现了一个新错误——“detailed_view”的反向,没有找到任何参数。尝试了 1 种模式:['blogs/(?P[0-9]+)$'] @jeff:这可能是因为有一个% url ... %id=...,而不是post_id=...

以上是关于TypeError:无法在 Django 视图函数中解压不可迭代的 int 对象的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:无法在 Django REST 框架中解压不可迭代的 int 对象

无法在 aws amazon linux v2 内的 django 视图函数中检索或创建数据库对象

在Django视图函数中无法检索AJAX请求数据值。

TypeError:对象在 DJango 1.8 Python 3.4 中不是 JSON 可序列化的

我一直陷入 Flask 错误。 TypeError:视图函数没有返回有效响应[重复]

Django:基于类的视图无法呈现清晰的表单