Projet Blog : images dans un article
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
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)
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte