6 changed files with 91 additions and 9 deletions
File diff suppressed because one or more lines are too long
@ -0,0 +1,7 @@ |
|||||||
|
from django.urls import path |
||||||
|
from . import views |
||||||
|
|
||||||
|
app_name = "comments" |
||||||
|
urlpatterns = [ |
||||||
|
path("<int:post_id>/leave_comment", views.leave_comment, name="leave_comment"), |
||||||
|
] |
@ -1,3 +1,39 @@ |
|||||||
from django.shortcuts import render |
from django.shortcuts import render, reverse |
||||||
|
from posts.models import Post |
||||||
|
from django.http import Http404, HttpResponseRedirect |
||||||
|
from .models import Comment |
||||||
|
from datetime import datetime |
||||||
|
from django.core.exceptions import ObjectDoesNotExist |
||||||
|
|
||||||
# Create your views here. |
|
||||||
|
def leave_comment(request, post_id): |
||||||
|
parent: Comment |
||||||
|
|
||||||
|
try: |
||||||
|
post = Post.objects.get(id=post_id) |
||||||
|
except ObjectDoesNotExist: |
||||||
|
raise Http404("Пост не найден") |
||||||
|
|
||||||
|
# сделать проверку более вменяемой |
||||||
|
parent_id = request.POST["reply_to"] |
||||||
|
|
||||||
|
if parent_id == "": |
||||||
|
parent = None |
||||||
|
else: |
||||||
|
try: |
||||||
|
parent = Comment.objects.get(id=parent_id) |
||||||
|
# если комментарий, на который отвечает пользователь не к |
||||||
|
# этой статье, то игнорируем поле ответа |
||||||
|
if not parent in post.comment_set.all(): |
||||||
|
parent = None |
||||||
|
|
||||||
|
except ObjectDoesNotExist: |
||||||
|
parent = None |
||||||
|
|
||||||
|
post.comment_set.create( |
||||||
|
author_name=request.POST["name"], |
||||||
|
comment_text=request.POST["text"], |
||||||
|
reply=parent, |
||||||
|
) |
||||||
|
|
||||||
|
return HttpResponseRedirect(reverse("posts:detail", args=(post.id,))) |
||||||
|
Loading…
Reference in new issue