Python类在HTML按钮点击时执行
我对Python完全是个新手,之前搜索过我的问题,但没有找到答案,所以我希望你们能帮帮我 :)
我有一个模板文件,里面有一个按钮:
<button class="btn" value="{{invoice.number}}">Send</button>
在另一个文件里,我有一个类,这个类会运行另一个文件里的函数:
class ReminderManual(webapp2.RequestHandler):
...
for inv in invoices:
is_send = reminder.send(inv)
我想要做到的是:
当按钮被点击时运行这个类
显示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的表单机制: