#django #python-3.x #django-models #django-forms #django-views
#django #python-3.x #django-модели #django-forms #django-просмотры
Вопрос:
В каждом элементе есть кнопка повышения, но когда я нажимаю на нее, это увеличивает количество голосов только за последний добавленный элемент.
<a href="javascript:{document.getElementById('upvote').submit() }">
<button class="btn btn-success d-block w-100 mt-4"><span class="pull-left">UPVOTE <i
class="fa fa-thumbs-o-up"></i> </span> <span class="pull-right"> {{product.upvote}} </span>
</button>
</a>
<form action="{% url 'upvote' product.id %}" method="POST" id="upvote">
{% csrf_token %}
<input type="hidden" name="upvote">
</form>
from django.urls import path
from myApp import views
urlpatterns = [
path('', views.HomePageView.as_view(),name='home'),
path('<int:product_id>/upvote',views.Upvote,name='upvote'),
]
def Upvote(request, product_id):
if request.method == 'POST':
product = get_object_or_404(Product, pk=product_id)
product.upvote = 1
product.save()
return redirect('home')
Комментарии:
1. Потому что в HTML идентификаторы должны быть уникальными.
2. Как я могу сделать каждый элемент уникальным?
3. Не знаю, потому что вы не показали остальную часть шаблона, но, по-видимому, выполняется цикл for, чтобы вы могли добавить значение
product.id
orforloop.counter
кupvote
идентификатору в обоих местах.4. Почему бы не привязать событие к классу, записать идентификатор элемента в любой атрибут данных и прочитать его оттуда?