Страница не найдена (404)Текущий путь, {% url 'post_detail' post.pk % }, не совпал ни с одним из этих путей

[привет я новичок в django и я столкнулся с проблемой при использовании первичных ключей.название проекта blog project и app is blog это мой код]. вот скриншот ошибки, когда я нажимаю на заголовок:1 пожалуйста, помогите мне

#blog/urls.py
from django.urls import path
from .views import BlogListView,BlogDetailView
urlpatterns = [
    path("post/<int:pk>/",BlogDetailView.as_view(),name = "post_detail"),
    path('', BlogListView.as_view(), name = "home"),
    
   
]
#blog/templates/home.html
{% extends 'base.html' %}
<style>
    .post-entry{ 
        color:antiquewhite;

    }
</style>

{% block content %}  
{% for post in object_list %}  
<div class = "post-entry">
    <h2><a  href = "{% url 'post_detail/' post.pk  % }">{{post.title}}</a></h2>
    <p>{{post.body}}</p>

</div>
{% endfor %}
{% endblock content %}
#views.py
 from django.shortcuts import render
from django.views.generic import ListView,DetailView
from .models import Post
# Create your views here.
class BlogListView(ListView):
    model = Post
    template_name = "home.html"
class BlogDetailView(DetailView):
    model = Post
    template_name = "post_detail.html"
 

Решение, которое нужно попробовать

Я согласен с комментарием gyspark, но я также думаю, что post.pk нужно изменить на post.id. Например:

blog/templates/home.html

{% extends 'base.html' %}
<style>
    .post-entry{ 
        color:antiquewhite;

    }
</style>

{% block content %}  
{% for post in object_list %}  
<div class = "post-entry">
    <h2><a  href="{% url "post_detail" post.id  %}">{{ post.title }}</a></h2>
    <p>{{post.body}}</p>

</div>
{% endfor %}
{% endblock content %}

blog/urls.py

from django.urls import path
from .views import BlogListView, BlogDetailView

urlpatterns = [
    path('', BlogListView.as_view(), name="home"),
    path("post/<int:pk>/", BlogDetailView.as_view(), name="post_detail"),
]

Но также, импортируете ли вы blog.urls в файл urls.py основного приложения? Или основное приложение называется "blog"?


Другие советы

Еще одна вещь, которая может быть полезной, это добавить блок стилей в base.html:

<!-- The rest of your code -->
<style>
{% block style %} 
{% endblock %} 
</style>
</head>

<!-- the rest of your code -->

и затем в ваших шаблонах, например home.html, вы обновите его следующим образом:

{% extends 'base.html' %}
{% block style %}
    .post-entry{ 
        color:antiquewhite;

    }
{% endblock %}

{% block content %}  
{% for post in object_list %}  
<div class = "post-entry">
    <h2><a  href="{% url "post_detail" post.id  % }">{{ post.title }}</a></h2>
    <p>{{post.body}}</p>

</div>
{% endfor %}
{% endblock content %}

У вас есть орфографическая ошибка:

"{% url 'post_detail/' post.pk  % }"

Удалите / и лишний пробел в закрывающем %}:

"{% url 'post_detail' post.pk  %}"
Вернуться на верх