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
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.