Код: Выделить всё
Error: DoesNotExist at /news/post/6
Post matching query does not exist.
Ошибка возникает в классе 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})
Код: Выделить всё
{% extends 'main/layout.html' %}
{% load crispy_forms_tags %}
{% load static %}
{% block content%}
[url={% url ]Вернуться обратно[/url]
{% csrf_token %}
Вы уверены?
Вы уверены, что хотите удалить комментарий это невозможно отменить
Удалить
{% endblock content %}
Код: Выделить всё
{% 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 %}
Код: Выделить всё
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'),
]
Подробнее здесь: https://stackoverflow.com/questions/785 ... hing-query