如何在 html 中制作一个可以在 Python 中触发后端函数的按钮?



看起来我不知道我在做什么 - 这是绝对正确的。做一个我们几乎被扔给狼的项目。我从未学过HTML,也从未使用过任何框架。对Python也不太熟悉。

以下代码旨在显示问题标题列表 - 单击它们时,您将被重定向到显示问题、附加文本和各种答案的页面。

我想插入按钮,让你对这些问题投赞成票,每个按钮都应该在问题的旁边(至少接近)。点击时:在前端,我只想要一些用户点赞的视觉信号,比如按钮变成橙色(如此原始)或绿色,等等。在后端,我希望按钮触发一个名为vote(question, user)的静态方法,该方法创建一个投票对象,以记录用户对问题投了赞成票。这些对象存储在数据库中。它们只包含自己自动生成的 ID、选民/用户的 ID 和相关问题的 ID。

理想情况下,我希望按钮的颜色取决于此投票对象的存在,但这实际上只是额外的内容。

如果可能的话,我希望在问题旁边显示一个数字,显示它收到的票数。 要获得票数,它应该调用question.get_votes(self),它计算包含问题 ID 的所有投票对象。我确实意识到我可以将其存储为问题的属性,并在每次有人投票时增加它,但是......是的。

我不知道是否需要参数,即使查看了其他线程/谷歌搜索,我真的不知道我应该如何做到这一点。

<ul>
{% for question in all_questions_with_sub_code %}
<!-- no idea what i'm supposed to enter here -->
<li><a href="/question/{{ question.id }}/">{{question.question_title}}</a></li>
{% endfor %}
</ul>

你需要使用 Django + Ajax 的组合来创建流畅的投票系统,而无需重新加载页面。 以下链接将帮助您入门:

我自己的喜欢按钮:Django + Ajax - 如何?

在 HTML 上创建按钮并在 JS 中处理单击。使用 AJAX 将所需的参数传递给 Python,如下所示:

$.ajax({
method: 'POST',
url: 'someURL',
data: {'key': value,
csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val()},
success: function (data) {},
error: function (data) {}        
});

然后在 Python 中像这样接收它:

def convert(request):
if request.is_ajax():
request_data = request.POST
return HttpResponse(1)

确保处理 URL 并在 HTML 中使用CSRF_TOKEN

最新更新