Résolue

Projet Blog : images dans un article

# Affichage # Résolution d'erreurs # Django

Gabriel Trouvé

Mentor

Bonjour à tous,


Dans la partie ajouter des médias dans le fichier d'urls :


  • on ajoute ce morceau de code pour afficher les images
<img src="{{ post.thumbnail.url }}" alt="L'image de l'article">

Mais du coup, si vous ouvrez un article sans images uploadé, ça retourne une erreur et ça surligne ce bout de code en rouge.


Pour remédier à ce problème j'ai fait ça :

  • ajouter une condition, thumbnail correspond au champs imageField de mon modèle.
  • Ma question ==> Est-ce qu'il y aurait eu une meilleure façon de corriger le pblm ou ce que j'ai fait c'est bien ?


{% if post.thumbnail %}
<img src="{{ post.thumbnail.url }}" alt="L'image de l'article">
{% endif %}


Question supplémentaire :

  • C'est normal que dans mes urls j'ai un "?" ? (j'ai l'impression que c'est lié au fait que j'ai fait en sorte d'ajouter des img dans un articles).


Merci d'avance

J'aurais fait la même chose que toi pour le thumbnail, à une différence près : tu pourrais par exemple mettre une image vide par défaut qui est changée si Django détecte que tu as mis une image.

Pour ton 2e problème, fais voir ton fichier urls.py ?

Salut Gabriel,


comme Vincent moi aussi je fais pareil pour le if.


Tu utilises les slugs pour les urls ?

Gabriel Trouvé

Mentor

Ok merci !


URL application :

from django.urls import path 
 from .views import BlogHome, BlogPostCreate, BlogPostUpdate, BlogPostDetail, BlogPostDelete 
 from django.contrib.auth.decorators import login_required 
  
 # un espace de nommage pour préciser le nom des urls 
 # quand je fais un reverse("posts:home"), utile si j'ai plusieurs apps avec home en name. 
 app_name = "posts" 
  
 urlpatterns = [ 
     path('', BlogHome.as_view(), name="home"), 
     path('create/', BlogPostCreate.as_view(), name="create"), 
     # pour ne pas accéder à la vue si pas log,1 façon de faire. 
     # path('create/', login_required(BlogPostCreate.as_view()), name="create"), 
     path('<str:slug>/', BlogPostDetail.as_view(), name="post"), 
     path('edit/<str:slug>/', BlogPostUpdate.as_view(), name="edit"), 
     path('delete/<str:slug>/', BlogPostDelete.as_view(), name="delete"), 
 ]



Du coup pour l'URL dans le dossier projet.


from django.contrib import admin 
 from django.conf.urls.static import static 
 from django.urls import path, include 
 from blog import settings 
  
 urlpatterns = [ 
     path('admin/', admin.site.urls), 
     path('blog/', include("posts.urls")), 
 ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Hello,


le "test-2" de ton url c'est bien le slug de l'article ?


Comment atteins tu cet url, tu cliques sur l'article depuis une liste d'articles ?

Gabriel Trouvé

Mentor

C'est ça oui

Hello,


du coup tu as résolu ton pb ? Il y a un pb dans le slug non ?

Nan j'ai clôturé car le "?" se met tout seul. Mais si je le supprime de l'url tout va bien. Et je n'ai pas de bug ou quoi que ce ça soit. Je ne sais pas pourquoi un "?" apparait de manière automatique mais il n'est pas gênant.

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.