我的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>
您没有将Logg
ID传递给视图,请在URL中添加一个数字参数并将ID传递给url
模板Tag:
URL路由:
path('(?P<id>d+)',view=views.upv,name='upvote'),
模板:
{% url 'minor:upvote' my_current_logg.pk %}