Привет! У меня проблема. При удалении комментария появляется ошибка Соответствующий запрос не существует.Python

Программы на Python
Anonymous
Привет! У меня проблема. При удалении комментария появляется ошибка Соответствующий запрос не существует.

Сообщение Anonymous »

У меня проблема. При удалении комментария появляется ошибка Соответствующий запросу публикации не существует. И я не знаю, что с этим делать. Заранее спасибо!

Код: Выделить всё

Error: DoesNotExist at /news/post/6
Post matching query does not exist.
Внимание! Я использую фреймворк django
Ошибка возникает в классе PostDetailView в строке:

Код: Выделить всё

post = Post.objects.get(pk=pk)
Вот код:
views.py:

Код: Выделить всё

from django.shortcuts import render
from django.urls import reverse_lazy
from .forms import PostForm, CommentForm
from .models import Post, Comment
from django.views import View
from django.views.generic.edit import UpdateView, DeleteView

class PostListView(View):
def get(self, request, *args, **kwargs):
posts = Post.objects.all().order_by('-created_on')
form = PostForm()

context = {
'post_list': posts,
'form': form,
}
return render(request, 'news/post_list.html', context)

def post(self, request, *args, **kwargs):
posts = Post.objects.all().order_by('-created_on')
form = PostForm(request.POST)

if form.is_valid():
new_post = form.save(commit=False)
new_post.author = request.user
new_post.save()

context = {
'post_list': posts,
'form': form,
}
return render(request, 'news/post_list.html', context)

class PostDetailView(View):
def get(self, request, pk, *args, **kwargs):
post = Post.objects.get(pk=pk)
form = CommentForm()

comments = Comment.objects.filter(post=post).order_by('-created_on')

context = {
'post': post,
'form': form,
'comments': comments,
}
return render(request, 'news/details_view.html', context)

def post(self, request, pk, *args, **kwargs):
post = Post.objects.get(pk=pk)
form = CommentForm(request.POST)

if form.is_valid():
new_comment = form.save(commit=False)
new_comment.author = request.user
new_comment.post = post
new_comment.save()

comments = Comment.objects.filter(post=post).order_by('-created_on')

context = {
'post': post,
'form': form,
'comments': comments,
}
return render(request, 'news/details_view.html', context)

class PostEditView(UpdateView):
model = Post
fields = ['body']
template_name = 'news/post_edit.html'

def get_success_url(self):
pk = self.kwargs['pk']
return reverse_lazy('post-detail', kwargs={'pk': pk})

class PostDeleteView(DeleteView):
model = Post
template_name = 'news/post_delete.html'
success_url = reverse_lazy('post-list')

class CommentDeleteView(DeleteView):
model = Comment
template_name = 'news/comment_delete.html'

def get_success_url(self):
pk = self.kwargs['pk']
return reverse_lazy('post-detail', kwargs={'pk': pk})
comment_delete.html:

Код: Выделить всё

{% extends 'main/layout.html' %}
{% load crispy_forms_tags %}
{% load static %}

{% block content%}




[url={% url ]Вернуться обратно[/url]





{% csrf_token %}
Вы уверены?
Вы уверены, что хотите удалить комментарий это невозможно отменить

Удалить





{% endblock content %}
details_view.html:

Код: Выделить всё

{% extends 'main/layout.html' %}
{% load crispy_forms_tags %}
{% load static %}

{% block title%}Post{% endblock %}

{% block content%}




[url={% url ]Вернуться обратно[/url]





[b]{{ post.author }}[/b] {{ post.created_on }}
{% if request.user == post.author %}
[url={% url ][i][/i][/url]
[url={% url ][i][/i][/url]
{% endif %}

{{ post.body }}





{% csrf_token %}
{{ form | crispy }}

Написать




{% for comment in comments %}



[b]{{ comment.author }}[/b] {{ comment.created_on }}
{% if request.user == post.author %}
[url={% url ][i][/i][/url]
{% endif %}

{{ comment.comment }}


{% endfor %}

{% endblock content %}
news/urls.py:

Код: Выделить всё

from django.urls import path
from . import views
from .views import PostListView, PostDetailView, PostEditView, PostDeleteView, CommentDeleteView

urlpatterns = [
path('', PostListView.as_view(), name='post-list'),
path('post/', PostDetailView.as_view(), name='post-detail'),
path('post/edit/', PostEditView.as_view(), name='post-edit'),
path('post/delete/', PostDeleteView.as_view(), name='post-delete'),
path('post//comment/delete/', CommentDeleteView.as_view(), name='comment-delete'),
]
Я пробовал статьи и видео с YouTube

Подробнее здесь: https://stackoverflow.com/questions/785 ... hing-query

Вернуться в «Python»