web-dev-qa-db-fra.com

TypeError: impossible de décompresser un objet int non itérable dans la fonction Django views

Voici mon code dans URL.py, views.py et page HTML. Cependant, il me renvoie l'erreur: TypeError: impossible de décompresser un objet int non itérable.

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

]

J'essaie de capturer l'id des blogs de messages dans la vue de liste pour obtenir l'objet de blog de la base de données avec la requête id. Voici mon code d'affichage.

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)

Cependant, comme je l'ai mentionné, il renvoie l'erreur ci-dessus.

Quelqu'un pourrait-il expliquer ce que je fais mal

6
jeff

Vous devez spécifier le nom du paramètre dans les appels .filter(..) ou .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)

Je propose également de renommer votre variable en quelque chose d'autre (donc les deux dans le urls.py et views.py), puisque id est une fonction intégrée, et maintenant une variable locale "cache" cette fonction intégrée.

6
Willem Van Onsem