From 2f02c8fa2bd2b17622dc381612a5ab59f3ef9ba6 Mon Sep 17 00:00:00 2001 From: Arity-T Date: Thu, 16 Jan 2025 18:37:27 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B5=D0=BB=D1=8C=D0=B7=D1=8F=20=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D0=B2=D0=B8=D1=82=D1=8C=20=D0=B4=D0=B2=D0=B0?= =?UTF-8?q?=20=D0=BE=D1=82=D0=B7=D1=8B=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../books/templates/books/book_detail.html | 20 +++++++++------- bookify/books/views.py | 23 ++++++++++++++++--- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/bookify/books/templates/books/book_detail.html b/bookify/books/templates/books/book_detail.html index 3b37044..225886e 100644 --- a/bookify/books/templates/books/book_detail.html +++ b/bookify/books/templates/books/book_detail.html @@ -37,14 +37,18 @@ {% if user.is_authenticated %} -
-

Добавить отзыв

-
- {% csrf_token %} - {{ review_form.as_p }} - -
-
+ {% if user_has_review %} +

Вы уже оставили отзыв.

+ {% else %} +
+

Добавить отзыв

+
+ {% csrf_token %} + {{ review_form.as_p }} + +
+
+ {% endif %} {% else %}

Для добавления отзывов войдите или зарегистрируйтесь.

{% endif %} diff --git a/bookify/books/views.py b/bookify/books/views.py index 49db152..a944e38 100644 --- a/bookify/books/views.py +++ b/bookify/books/views.py @@ -32,14 +32,23 @@ def book_list(request): def book_detail(request, pk): - """Детальная страница книги.""" book = get_object_or_404(Book, pk=pk) reviews = book.reviews.all() review_form = ReviewForm() + + user_has_review = False + if request.user.is_authenticated: + user_has_review = reviews.filter(user=request.user).exists() + return render( request, "books/book_detail.html", - {"book": book, "reviews": reviews, "review_form": review_form}, + { + "book": book, + "reviews": reviews, + "review_form": review_form, + "user_has_review": user_has_review, + }, ) @@ -92,8 +101,16 @@ def delete_book(request, pk): @login_required def add_review(request, pk): - """Добавление отзыва к книге (только авторизованный пользователь).""" book = get_object_or_404(Book, pk=pk) + + # Проверяем, не оставил ли уже этот пользователь отзыв + existing_review = Review.objects.filter(book=book, user=request.user).first() + if existing_review: + # Если уже есть отзыв, можно показать сообщение или + # перенаправить на страницу книги с сообщением + # Для простоты сделаем редирект с GET-параметром + return redirect("books:book_detail", pk=pk) + if request.method == "POST": form = ReviewForm(request.POST) if form.is_valid():