Django: «Не найдено ни одного комментария, соответствующего запросу» Ошибка 404 - PullRequest
0 голосов
/ 28 марта 2020

Я создаю простое приложение для блога с комментариями на странице «Подробный просмотр сообщений», но я получаю сообщение об ошибке 404 с сообщением «Не найдено ни одного комментария, соответствующего запросу» всякий раз, когда я пытаюсь отправить свой комментарий. Все остальное в приложении работает, кроме комментариев. Я новичок в django и создаю этот сайт для изучения, буду признателен за любую помощь!

Views.py

class PostDetailView(DetailView):
  model = Post
  fields = ['content']

class CommentCreateView(LoginRequiredMixin, CreateView):
  model = Comment
  fields = ['content']
  template_name = 'blog/comment.html'

  def form_valid(self, form):
    post = self.get_object()
    form.instance.author = self.request.user
    return super().form_valid(form)

моделей. py

class Comment(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments')
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    content = models.TextField()
    date_posted = models.DateTimeField(default=timezone.now)

    class Meta:
        ordering = ['-date_posted']

    def __str__(self):
        return f'Comment {self.content} by {self.author.username}'

    def get_absolute_url(self):
        return reverse('comment', kwargs={'pk': self.pk})

urls.py

from django.urls import path
from .views import (
    PostListView,
    PostDetailView,
    PostCreateView,
    PostUpdateView,
    PostDeleteView,
    UserPostListView,
    CommentCreateView
) 
from . import views

urlpatterns = [
    path('', PostListView.as_view(), name='blog-home'),
    path('post/comment/<int:pk>/', CommentCreateView.as_view(), name='create'),
    path('user/<str:username>', UserPostListView.as_view(), name='user-posts'),
    path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
    path('post/new/', PostCreateView.as_view(), name='post-create'),
    path('post/<int:pk>/update/', PostUpdateView.as_view(), name='post-update'),
    path('post/<int:pk>/delete/', PostDeleteView.as_view(), name='post-delete'),
    path('about/', views.about, name='blog-about'),
] 

комментарии. html Это форма. Он должен перенаправить на другую форму, чтобы комментировать, а затем вернуться к подробному представлению сообщения

{% extends "blog/base.html" %}
{% load crispy_forms_tags %}
{% block content %}

<div class="content-section">
    <form method="POST">
        {% csrf_token %}
        <fieldset class="form-group">
            <legend class="border-bottom mb-4">Comment</legend>
            {{ form|crispy }}
        </fieldset>
        <div class="form-group">
            <button class="btn btn-outline-info" type="submit">Post</button>
        </div>
    </form>
  </div> 

{% endblock content %}
...