Django: Почему один шаблон url работает, а другой нет?
По сути, мой список постов index.html работает отлично, и по ссылке на детальный просмотр поста он работает правильно.
Однако я скопировал тот же код в представление Profile только с постами request.user.
Без {%url 'post_detail' post.slug %}
работает, так как остальные посты с пагинацией отображаются как ожидалось.
Однако при использовании этого url выдает ошибку:
NoReverseMatch at /blog_app/profile/
Повтор для 'post_detail' с аргументами '('',)' не найден. Попытка 1 шаблона(ов): ['(?P[-a-zA-Z0-9_]+)/$']
Код в представлениях и шаблонах по сути идентичен, почему это не работает?
Views.py: (рабочий)
class PostList(generic.ListView):
model = Post
queryset = Post.objects.filter(status=1).order_by("-created_on")
template_name = "index.html"
paginate_by = 6
(неработающий)
class Profile(generic.ListView):
model = Post
template_name = "profile.html"
paginate_by = 6
def get_queryset(self):
return Post.objects.filter(author=self.request.user)
urls.py:
urlpatterns = [
path('', views.PostList.as_view(), name="home"),
path('<slug:slug>/', views.PostDetail.as_view(), name='post_detail'),
path('like/<slug:slug>', views.PostLike.as_view(), name='post_like'),
path('poll/<slug:slug>', views.PostPoll.as_view(), name='post_poll'),
path('blog_app/create_post/', views.CreatePost.as_view(), name='create_post'),
path('blog_app/profile/', views.Profile.as_view(), name='profile'),
]
Мои два шаблона: (рабочий)
{% for post in post_list %}
<div class="col-md-4">
<div class="card mb-4">
<div class="card-body">
<div class="image-container">
{% if "placeholder" in post.featured_image.url %}
<img class="card-img-top"
src="https://codeinstitute.s3.amazonaws.com/fullstack/blog/default.jpg">
{% else %}
<img class="card-img-top" src=" {{ post.featured_image.url }}">
{% endif %}
<div class="image-flash">
<p class="author">Author: {{ post.author }}</p>
</div>
</div>
<a href="{% url 'post_detail' post.slug %}" class="post-link">
<h2 class="card-title">{{ post.title }}</h2>
<p class="card-text">{{ post.excerpt }}</p>
</a>
<hr />
<p class="card-text text-muted h6">{{ post.created_on}} <i class="far fa-heart"></i>
{{ post.number_of_likes }}</p>
</div>
</div>
</div>
{% if forloop.counter|divisibleby:3 %}
</div>
<div class="row">
{% endif %}
{% endfor %}
</div>
(неработающий)
{% for post in post_list %}
<div class="col-md-4">
<div class="card mb-4">
<div class="card-body">
<div class="image-container">
{% if "placeholder" in post.featured_image.url %}
<img class="card-img-top"
src="https://codeinstitute.s3.amazonaws.com/fullstack/blog/default.jpg">
{% else %}
<img class="card-img-top" src=" {{ post.featured_image.url }}">
{% endif %}
<div class="image-flash">
<p class="author">Author: {{ post.author }}</p>
</div>
</div>
<a href="{% url 'post_detail' post.slug %}" class="post-link">
<h2 class="card-title">{{ post.title }}</h2>
<p class="card-text">{{ post.excerpt }}</p>
</a>
<hr />
<p class="card-text text-muted h6">{{ post.created_on}} <i class="far fa-heart"></i>
{{ post.number_of_likes }}</p>
</div>
</div>
</div>
{% if forloop.counter|divisibleby:3 %}
</div>
<div class="row">
{% endif %}
{% endfor %}
</div>
</div>
url, о котором идет речь, находится в тегах якоря, окружающих post.title и post.excerpt