Pregunta sobre un comportamiento extraño

3 views
Skip to first unread message

Luis Fernando Ortiz

unread,
Mar 3, 2022, 1:00:37 PM3/3/22
to Django-es
Hola gente, buenas tardes, tengo un problema que me tiene la cabeza completamente despistada.  Os cuento, estoy haciendo un desarrollo de aprendizaje que construye un blog. Hasta aquí, nada desconocido, la web muestra la lista de artículos de este blog, pero cuando voy a ver el contenido de uno de ellos, cualquiera de ellos, observo lo siguiente:

1.- El enlace del título del post que supuestamente nos enviaría a ver el contenido, aparece la misma url que tiene la página donde esta la lista de post, como es el servidor de prueba 127.0.0.1:8000/blog/ y no apunta al teórico enlace que nos motraría el contenido del post.
2.- En la vista encargada de mostrar el contenido (post_detail), he puesto un print para que muestre el objeto que recupera y no me muestra nada, por lo que presumo que el error está recuperando el objeto.

Os pongo el código implicado por orden:

** models.py **
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.urls import reverse

# gestor de modelos
class PublishedManager(models.Manager):
def get_queryset(self):
return super(PublishedManager, self).get_queryset().filter(status='published')

class Post(models.Model):
STATUS_CHOICES = (
('draft', 'Draft'),
('published', 'Published'),
)
title = models.CharField(max_length=250)
slug = models.SlugField(max_length=250,
unique_for_date='publish')
author = models.ForeignKey(User,
on_delete=models.CASCADE,
related_name='blog_posts')
body = models.TextField()
publish = models.DateTimeField(default=timezone.now)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
status = models.CharField(max_length=10,
choices=STATUS_CHOICES,
default='draft')
objects = models.Manager() # The default manager.
published = PublishedManager() # Our custom manager.

class Meta:
ordering = ('-publish',)

def __str__(self):
return self.title

def get_absolute_url(self):
return reverse('blog:post_detail',
args=[self.publish.year,
self.publish.month,
self.publish.day,
self.slug])

** views.py
from django.shortcuts import render, get_object_or_404
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.views.generic import ListView
from .models import Post


def post_list(request):
object_list = Post.published.all()
paginator = Paginator(object_list, 3) # 3 posts in each page
page = request.GET.get('page')
try:
posts = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer deliver the first page
posts = paginator.page(1)
except EmptyPage:
# If page is out of range deliver last page of results
posts = paginator.page(paginator.num_pages)
return render(request,
'blog/post/list.html',
{'page': page,
'posts': posts})

def post_detail(request, year, month, day, post):
post = get_object_or_404(Post, slug=post,status='published',
publish__year=year,publish__month=month,publish__day=day)
print(post) # no lo saca
return render(request,'blog/post/detail.html',{'post': post})

class PostListView(ListView):
queryset = Post.published.all()
context_object_name = 'posts'
paginate_by = 3
template_name = 'blog/post/list.html'

**urls.py (de la app)
from django.urls import path
from . import views
app_name = 'blog'
urlpatterns = [
# post views
# path('', views.post_list, name='post_list'),
path('', views.PostListView.as_view(), name='post_list'),
path('<int:year>/<int:month>/<int:day>/<slug:post>/',views.post_detail,name='post_detail'),
]

¿Se os ocurre que puede ser? A mi me ronda que el problema pueda estar con el get_object pero no lo tengo nada claro.

Gracias por vuestro tiempo y perdón por la molestia

francisco del roioFrancisco Del Roio

unread,
Mar 3, 2022, 3:35:16 PM3/3/22
to djan...@googlegroups.com

Hola,

Has probado poniendo un breakpoint en lugar de un print?

Otra cosa, no veo por ningún lado donde seteas el slug al post recién creado, creo que eso es importante.

Saludos,

Reply all
Reply to author
Forward
0 new messages