Редактирование отзывов
This commit is contained in:
@@ -27,7 +27,14 @@
|
||||
<h3>Отзывы</h3>
|
||||
{% for review in reviews %}
|
||||
<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>
|
||||
<hr>
|
||||
</div>
|
||||
@@ -36,6 +43,7 @@
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
|
||||
{% if user.is_authenticated %}
|
||||
{% if user_has_review %}
|
||||
<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("succesful-logout/", views.logout, name="logout"),
|
||||
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)
|
||||
|
||||
|
||||
@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):
|
||||
"""Рекомендации книг по заданному жанру."""
|
||||
genre = get_object_or_404(Genre, name=genre_name)
|
||||
|
||||
Reference in New Issue
Block a user