я хочу кнопку upvote, которая при нажатии увеличивает значение поля (целое число) в базе данных - PullRequest
0 голосов
/ 21 ноября 2019

Мой HTML-код для кнопки

<td>
  <a href="{% url 'minor:upvote'  %}">
    <button type="button" class="likes" style="text-align:center;border-radius:40px;width: 100px;height: 40px">upvote</button>
  </a>
</td>

URL-адрес ..

path('',view=views.upv,name='upvote'),

представление

def upv(request,id):
    reporter = Logg.objects.get(id=id)
    reporter.upvote = reporter.upvote+1
    reporter.save()
    return redirect('/')

, но поле upvote, то есть целое поле сзначение по умолчанию 0 не увеличивается.

1 Ответ

1 голос
/ 21 ноября 2019

Вы должны передать идентификатор в определении urlpatterns. Поскольку вы используете path, для добавления идентификатора в аргумент представления используйте это

path('<id>/', views.upv, name="upvote")

Из path документации

Аргумент маршрута должен быть строкой или gettext_lazy () (см. Перевод шаблонов URL), который содержит шаблон URL. Строка может содержать угловые скобки (как указано выше) для захвата части URL-адреса и отправки ее в качестве аргумента ключевого слова в представление.

https://docs.djangoproject.com/en/2.2/ref/urls/#path

, а затем в шаблоне также необходимо указать идентификатор

<td>
  <a href="{% url 'minor:upvote' id=logg.id  %}">
    <button type="button" class="likes" style="text-align:center;border-radius:40px;width: 100px;height: 40px">upvote</button>
  </a>
</td>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...