通过表格处理选票

Handling votes through forms

我安装了 django-vote,它有一个简单的 API:

review = ArticleReview.objects.get(pk=1)

# Up vote to the object
review.votes.up(user_id)

# Down vote to the object
review.votes.down(user_id)

我有一个汽车页面,其中包含我希望投票的多个评论。我试过了:

<form action="{% url 'reviews:review-vote' review.id %}" method="GET">
    <button type="submit" name="vote-up"></button>
    <button type="submit" name="vote-down"></button>
</form>

URL:

url(r'^(?P<review_id>\d+)/vote/$', views.review_vote, name="review-vote"),

查看:

def review_vote(request, review_id):
    if request.GET.get("vote-up"):
        review = Review.objects.get(id=review_id)
        review.votes.up(request.user.id)
    return redirect("car", {"make": review.car.make, "years": review.car.years})

这不会执行投票,也不会重定向到汽车页面。我想在我的模板中实现投票 API,尽可能不重新加载页面。

任何建议或反馈都将受到欢迎,我们将不胜感激。

谢谢。

您可以检查 vote-upvote-down 键在 request.GET

<form action="{% url 'reviews:review-vote' review.id %}" method="GET">
    <button type="submit" name="vote-up"></button>
    <button type="submit" name="vote-down"></button>
</form>

并在视图中试试这个。

def review_vote(request, review_id):
    if "vote-up" in request.GET:
        review = Review.objects.get(id=review_id)
        review.votes.up(request.user.id)
    return redirect("car", {"make": review.car.make, "years": review.car.years})