我想要一个upvote按钮,当点击时,增加数据库中字段(整数)的值



我的html for按钮是

<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('/')

但是向上投票字段,即具有默认值0的整数字段没有被递增。

您必须在urlpatterns定义中传递id。由于您使用path,要将id添加到视图参数中,请使用以下

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

来自path文档

路由参数应该是包含URL模式的字符串或gettext_lazy(((请参阅翻译URL模式(字符串可能包含尖括号(如上所述(,用于捕获URL的一部分,并将其作为关键字参数发送到视图

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

然后在模板中,您还需要包括id

<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>

您没有将LoggID传递给视图,请在URL中添加一个数字参数并将ID传递给url模板Tag:

URL路由:

path('(?P<id>d+)',view=views.upv,name='upvote'),

模板:

{% url 'minor:upvote' my_current_logg.pk %}

最新更新