Résolue

Problème d'affichage dans la vue de détail du blog

# Django

Salut Docstring j ai ecris le code pour affiche ma vue de deatial mais je ne vois aucun article afficher aliors tous mon code fonctione bien. Toutres mes autres vues fonctionnent sans souci (Create Update delete)

voila code au niveau de mon fichier hltml. NOter que j ai pas voulu intergrer le block Title, mais ca ne dois pas poser un problem vu que toutes mes autres vues fonctionent sans souci. Toutes mes vues fonctinnent bien. La vue de tail ne m:affiche pas d'erreur mais elle n'affiche pas aussi mes aricles.

{% extends "base.html" %}

{% block content %}
    <article>
<h1> {{ post.title }}</h1>
<div> {{ post.content|linebreaks|safe  }} </div>
</article>
{% endblock %}
from django.urls import path
from posts.views import BlogHome, BlogPostCreate, BlogPostUpdate, BlogPostDetail, BlogPostDelete

app_name = "posts"

urlpatterns = [
    path('', BlogHome.as_view(), name="home"),  # ici c'est la vue d#ensemble  du blog
    path('create/', BlogPostCreate.as_view(), name="create"),  # fonctione
    path('<str:slug>/', BlogPostDetail.as_view(), name="post"),  # pas vraiment a revoir
    path('edit/<str:slug>/', BlogPostUpdate.as_view(), name="edit"),  # fonctione
    path('delete/<str:slug>/', BlogPostDelete.as_view(), name="delete"),  # fonctione
]
meas vues
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
from django.urls import reverse_lazy
from django.utils.decorators import method_decorator

from django.views.generic import ListView, CreateView, UpdateView, DetailView, DeleteView

from posts.models import BlogPost

class BlogHome(ListView):
    model = BlogPost
    context_object_name = "posts"

    def get_queryset(self):
        queryset = super().get_queryset()
        if self.request.user.is_authenticated:
            return queryset

        return queryset.filter(published=True)

@method_decorator(login_required, name='dispatch')  # restreindre cette vu au user pas connecter
class BlogPostCreate(CreateView):
    model = BlogPost
    template_name = "posts/blogpost_create.html"
    fields = ['title', 'content', ]

@method_decorator(login_required, name='dispatch')
class BlogPostUpdate(UpdateView):
    model = BlogPost
    template_name = "posts/blogpost_edit.html"
    fields = ['title', 'content', 'published', ]

@method_decorator(login_required, name='dispatch')
class BlogPostDetail(DetailView):
    model = BlogPost
    content_object_name = "post"

@method_decorator(login_required, name='dispatch')
class BlogPostDelete(DeleteView):
    model = BlogPost
    content_object_name = "post"
    success_url = reverse_lazy("posts:home")
tous mes urls
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path, include
from store.views import index, product_detail, add_to_cart, cart,delete_cart
from accounts.views import signup, logout_user, login_user
from shop import settings

urlpatterns = [
                  path('', index, name='index'),
                  path('admin/', admin.site.urls),
                  path('blog/', include('posts.urls')),
                  path('signup/', signup, name='signup'),
                  path('login/', login_user, name='login'),
                  path('logout/', logout_user, name='logout'),
                  path('cart/', cart, name='cart'),
                  path('cart/selete', delete_cart, name='delete_cart'),
                  path('product/<str:slug>', product_detail, name="product"),
                  path('product/<str:slug>/add-to-cart/', add_to_cart, name="add_to_cart"),
              ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Mes URls concatenees
from django.urls import path
from posts.views import BlogHome, BlogPostCreate, BlogPostUpdate, BlogPostDetail, BlogPostDelete

app_name = "posts"

urlpatterns = [
    path('', BlogHome.as_view(), name="home"),  # ici c'est la vue d#ensemble  du blog
    path('create/', BlogPostCreate.as_view(), name="create"),  # fonctione
    path('<str:slug>/', BlogPostDetail.as_view(), name="post"),  # pas vraiment a revoir
    path('edit/<str:slug>/', BlogPostUpdate.as_view(), name="edit"),  # fonctione
    path('delete/<str:slug>/', BlogPostDelete.as_view(), name="delete"),  # fonctione
]
mon fichier de base html
<!DOCTYPE html>

<html lang="fr">
<head>
<meta charset="utf-8"/>
<title>La boutique de Couture </title>
</head>
<body>
<nav>
<a href="{%  url 'posts:home' %}"> Accueil </a>
    {%  if request.user.is_authenticated  %}
    <a href="{%  url 'posts:create' %}"> Ajouter un articlede blog  </a>
    {%  endif %}
</nav>
<a href="{% url 'index' %}">
<h2> La boutique de couture </h2> <!-- ce lien sera cliquable grace au nom de  l'url -->
</a>

{% if user.is_authenticated %}
    {{ user.username }}
<a href="{% url 'logout' %}">Deconnection</a>
{% else %}
    <a href="{% url 'login' %}">Connection</a>
<a href="{% url 'signup' %}">S'inscrie</a>
{% endif %}

{% if user.cart %}
<p>
<a href="{% url 'cart' %}">Voir le panier({{ user.cart.orders.count }})</a>
</p>
{% endif %}

{% block content %}

{% endblock %}

</body>
</html>

Merci d 'avance
Cordialement Thibaut

Salut Thibaut,

De ce que je vois, dans tes vues DetailView et DeleteView, tu as utilisé content_object_name au lieu de context_object_name. La bonne syntaxe pour le contexte est context_object_name. Essaie déjà de changer ça et voit si règle entièrement ton problème d'affichage :)

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.