Редактирование отзывов
This commit is contained in:
@@ -27,7 +27,14 @@
|
|||||||
<h3>Отзывы</h3>
|
<h3>Отзывы</h3>
|
||||||
{% for review in reviews %}
|
{% for review in reviews %}
|
||||||
<div class="review">
|
<div class="review">
|
||||||
<p><strong>{{ review.user.username }}</strong> ({{ review.rating }}/5)</p>
|
<p>
|
||||||
|
<strong>{{ review.user.username }}</strong>
|
||||||
|
({{ review.rating }}/5)
|
||||||
|
{% if review.user == user %}
|
||||||
|
<!-- Добавим ссылку на редактирование -->
|
||||||
|
<a href="{% url 'books:edit_review' review.pk %}">Редактировать отзыв</a>
|
||||||
|
{% endif %}
|
||||||
|
</p>
|
||||||
<p>{{ review.text }}</p>
|
<p>{{ review.text }}</p>
|
||||||
<hr>
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
@@ -36,6 +43,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
{% if user.is_authenticated %}
|
{% if user.is_authenticated %}
|
||||||
{% if user_has_review %}
|
{% if user_has_review %}
|
||||||
<p>Вы уже оставили отзыв.</p>
|
<p>Вы уже оставили отзыв.</p>
|
||||||
|
|||||||
9
bookify/books/templates/books/edit_review.html
Normal file
9
bookify/books/templates/books/edit_review.html
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{% extends 'books/base.html' %}
|
||||||
|
{% block content %}
|
||||||
|
<h2>Редактировать отзыв для "{{ review.book.title }}"</h2>
|
||||||
|
<form method="POST">
|
||||||
|
{% csrf_token %}
|
||||||
|
{{ form.as_p }}
|
||||||
|
<button type="submit">Сохранить</button>
|
||||||
|
</form>
|
||||||
|
{% endblock %}
|
||||||
@@ -24,4 +24,5 @@ urlpatterns = [
|
|||||||
path("register/", views.register, name="register"),
|
path("register/", views.register, name="register"),
|
||||||
path("succesful-logout/", views.logout, name="logout"),
|
path("succesful-logout/", views.logout, name="logout"),
|
||||||
path("book/<int:pk>/edit/", views.edit_book, name="edit_book"),
|
path("book/<int:pk>/edit/", views.edit_book, name="edit_book"),
|
||||||
|
path("review/<int:pk>/edit/", views.edit_review, name="edit_review"),
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -121,6 +121,25 @@ def add_review(request, pk):
|
|||||||
return redirect("books:book_detail", pk=pk)
|
return redirect("books:book_detail", pk=pk)
|
||||||
|
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
def edit_review(request, pk):
|
||||||
|
"""Редактирование отзыва, только если пользователь – автор."""
|
||||||
|
review = get_object_or_404(Review, pk=pk)
|
||||||
|
# Проверяем владельца
|
||||||
|
if review.user != request.user:
|
||||||
|
raise PermissionDenied("Нельзя редактировать чужой отзыв.")
|
||||||
|
|
||||||
|
if request.method == "POST":
|
||||||
|
form = ReviewForm(request.POST, instance=review)
|
||||||
|
if form.is_valid():
|
||||||
|
form.save()
|
||||||
|
return redirect("books:book_detail", pk=review.book.pk)
|
||||||
|
else:
|
||||||
|
form = ReviewForm(instance=review)
|
||||||
|
|
||||||
|
return render(request, "books/edit_review.html", {"form": form, "review": review})
|
||||||
|
|
||||||
|
|
||||||
def genre_recommendations(request, genre_name):
|
def genre_recommendations(request, genre_name):
|
||||||
"""Рекомендации книг по заданному жанру."""
|
"""Рекомендации книг по заданному жанру."""
|
||||||
genre = get_object_or_404(Genre, name=genre_name)
|
genre = get_object_or_404(Genre, name=genre_name)
|
||||||
|
|||||||
Reference in New Issue
Block a user