Python类在HTML按钮点击时执行

1 投票
2 回答
1692 浏览
提问于 2025-04-18 07:24

我对Python完全是个新手,之前搜索过我的问题,但没有找到答案,所以我希望你们能帮帮我 :)

我有一个模板文件,里面有一个按钮:

<button class="btn" value="{{invoice.number}}">Send</button>

在另一个文件里,我有一个类,这个类会运行另一个文件里的函数:

class ReminderManual(webapp2.RequestHandler):
...
    for inv in invoices:
        is_send = reminder.send(inv)


我想要做到的是:

  1. 当按钮被点击时运行这个类

  2. 显示is_send的值


有没有什么想法可以帮我实现这个?

2 个回答

0

这个按钮需要一个点击处理器,这样它才能知道该做什么。点击处理器是一个JavaScript函数,它通过一个网址发送新的请求。所以,你的应用需要处理这个网址,并在请求到达时执行相应的类。

如果使用jQuery,你可以很简单地让点击处理器处理一个Ajax请求,向这个网址发送请求,并返回is_send的值。不过,应用里还是需要一个网址处理器来调用这个类。

我注意到你加了django这个标签。使用django的话,你可以把按钮放在一个表单里,利用django的表单处理功能来执行这个类,并返回is_send的值。

3

如果你不想重新加载整个页面来获取结果,可以使用JQuery和Ajax来实现:

在HTML中,你需要有:

<button class="btn" value="{{invoice.number}}" id="myButton">Send</button>

然后在文件的后面部分(在关闭的 </body> 标签之前):

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript">
    jQuery(document).ready(function() {
        $('#myButton').on('click', function (e) {
            var invoice_number = $('#myButton').val();
            var data = { invoice_number:invoice_number };
            var args = { dataType: "json", type:"POST", url:"/my_ajax_url/",
                        data:data, complete:ajax_call_complete };
            $.ajax(args);
        });
    });
    var ajax_call_complete = function(res, status) {
        data = jQuery.parseJSON(res.responseText);
        // use data as a json response object here and
        // do something with the response data
    }
</script>

在JavaScript中,/my_ajax_url/ 是你服务器上处理请求的地址。这个地址是通过Ajax调用的,参数是以POST的方式发送的(在这个代码示例中,按钮的值作为参数 invoice_number 发送)。

我通常会让服务器的Ajax请求返回JSON格式的数据,然后通过回调方法来处理这些数据(在这个例子中是 ajax_call_complete)。在这里你可以检查是否有错误,并通过显示消息、修改某些HTML元素等方式向用户反馈结果。

如果你想提交整个页面而不是使用Ajax,你可以使用Django的表单机制:

https://docs.djangoproject.com/en/1.6/topics/forms/

撰写回答