Lección 5: Listado dinámico
El objetivo será mostrar los artículos que has añadido en el panel administrativo en la página principal.
Edita el archivo my_blog/views.py
y sustituye todo el contenido con el siguiente código:
from django.shortcuts import render
from django.http import HttpResponse
from .models import Article # Nuevo
def hello_world(request):
return HttpResponse('Hola, mundo!')
def article_list(request): # Nuevo
articles = Article.objects.all() # Nuevo
return render(request, 'article_list.html', {'articles': articles}) # Nuevo
Crea un archivo article_list.html
en la carpeta my_blog/templates/
(deberás crearla) con el siguiente contenido:
<!DOCTYPE html>
<html>
<head>
<title>Lista de artículos</title>
</head>
<body>
<h1>Lista de grandes mujeres en la historia de la informática</h1>
</body>
</html>
Y añade la nueva vista a las URLs de la aplicación en my_blog/urls.py
:
from django.urls import path
from . import views
urlpatterns = [
path('', views.article_list, name='article_list'),
path('articles/', views.article_list, name='article_list'), # Nuevo
]
Ves a http://localhost:8000/articles/
y deberías ver los artículos que has añadido en el panel administrativo.
Un momento… ¿por qué no se ven las imágenes? En el siguiente apartado lo solucionaremos.
Mostrando imágenes
Todo el contenido que subamos a la base de datos se guardará en la carpeta media
. Para que Django pueda servir estos archivos, necesitamos añadir las rutas a my_app/urls.py
:
from django.contrib import admin
from django.urls import path, include
from django.conf import settings # Nuevo
from django.conf.urls.static import static # Nuevo
urlpatterns = [
path('', include('my_blog.urls')),
path('admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) # Nuevo
Ahora ya deberías ver las imágenes en la página.
La estética no es muy bonita, ¡vamos a añadir un poco de CSS!
Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.
¿Me invitas a un café? ☕
Puedes hacerlo usando el terminal.
ssh customer@andros.dev -p 5555
Comentarios
Nuevo comentario
Nueva replica {{ formatEllipsisAuthor(replyComment.author) }}
Escribe el primer comentario
{{ comments.length }} comentarios