<p>以下是我将如何实现这一目标:</p>
<p>首先,我有一些简单的表格来处理上升票/下降票:</p>
<pre><code><form method="POST" action="{% url 'view-supplier' %}"> //upvote form
{% csrf_token %}
<input type="hidden" name="upvote-button">
<button type="submit" style="width:100%">Upvote Button</button>
</form>
<form method="POST" action="{% url 'view-supplier' %}"> // downvote form
{% csrf_token %}
<input type="hidden" name="downvote-button">
<button type="submit" style="width:100%">Downvote Button</button>
</form>
</code></pre>
<p>然后我将视图设置为:</p>
<pre><code>def supplierView(request):
supplier_vote = get_object_or_404(User, id=pk)
if 'upvote-button' in request.POST:
supplier_vote.upvotes += 1
supplier_vote.save()
upvote_count = supplier_vote.upvotes
elif 'downvote-button' in request.POST:
supplier_vote.downvotes -= 1
supplier_vote.save()
downvote_count = supplier_vote.downvotes
else:
downvote_count = supplier_vote.downvotes
upvote_count = supplier_vote.upvotes
context = {
'upvote_count': upvote_count,
'downvote_count': upvote_count,
}
return render(request, 'main/view-suppliers.html', context)
</code></pre>
<p>这样,当有人单击upvote按钮时,他们将被重定向到同一视图,该视图将处理添加upvote并更新上下文</p>
<p>如果<code>view-supplier</code>是一个详细视图,那么还必须将PK传递给该视图</p>