Почему функция get_absolute_url не работает?
Я пытаюсь использовать get_absolute_url для получения объекта (post_detail) из (post_list),
но возвращается без объекта и все на той же странице (post_list) без ошибки.
в views.py
:
# Список объектов с использованием представлений на основе функций
def post_list(request):
post_list=Post.objects.all().order_by('-created_at')
lastest=post_list.order_by('-created_at')[:4]
last_post= post_list.order_by('-created_at')[0]
context={
'allpost':post_list,
'latest':lastest,
'lastpost':last_post
}
return render(request,'post/post_list.html',context)
# Post_singl_object using DetailView
class PostDetail(DetailView):
model=Post
context_object_name='post_detail'
def get_context_data(self, **kwargs):
context= super().get_context_data(**kwargs)
context['slug']=super().get_context_data(**kwargs)
return context
urls.py :
from django.urls import path
from . import views
app_name="allpost"
urlpatterns = [
path('', views.post_list),
path('<slug:slug>',views.PostDetail.as_view(),name='post_detail'),
]
в моих шаблонах на странице (post_list.html) я делаю цикл для объектов списка, чтобы получить (название, заголовок, изображение и автора), но в ссылке я использую (
)def get_absolute_url(self):
return reverse("post_detail", kwargs={'slug': self.slug}
) для перенаправления на страницу поста, но это не работает и все еще находится на той же странице (post_list).
в post_list.html
:
{% for post in allpost %}
<a href="{{ post_detail.get_absolute_url }}" class="stretched-link">Continue reading</a>
{% endfor %}
есть идеи?
Вы забыли предварять url меткой app_name, определенной в urls.py
файле
def get_absolute_url(self):
return reverse("allpost:post_detail", kwargs={'slug': self.slug}