Django on button单击调用函数视图

时间:2019-01-14 19:04:25

标签: python django

我有一个基于类的视图的匹配项列表:

class MatchListView(LoginRequiredMixin, generic.ListView)

在模板中,我有一排带有匹配项列表的行,在一列中有一个按钮。我想做的是,当我单击此按钮时,将调用另一个功能/视图,该功能/视图带有该匹配ID和用户,然后将其保存到数据库并返回到列表。

我已经做了类似的事情:

模板

 <td><a href="{% url 'match_register_request' match.id %}" class="btn btn-info btn-sm">Zgłoś się na mecz</a></td>

URL

path('match_register_request/<int:pk>', views.MatchRegisterViewRegister.as_view(), name='match_register_request')

和视图:

class MatchRegisterViewRegister(LoginRequiredMixin, generic.View):


    def post(self, request, object_id, *args, **kwargs):
        # Add record to DB
        mr = MatchRegister(match=object_id, ref_reg=self.request.user)
        mr.save()
        return redirect('matches_list')

但是它不起作用。它使用id,重定向到URL“ matches_register_request / {ID}”,但不执行任何操作。

您能帮我完成这项工作吗?

1 个答案:

答案 0 :(得分:2)

您需要向此终结点而不是POST发出GET请求。最简单的方法是使用表格,例如:

<td>
  <form action="{% url 'match_register_request' match.id %}" method="post">
    {% csrf_token %}
    <button class="btn btn-info btn-sm">Zgłoś się na mecz</button>
  <form>
</td>