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