繁体   English   中英

使用javascript从模板调用函数

[英]Calling a function from a template using javascript

我是Django的新手,我正在尝试做一些事情,但我似乎并不了解如何做。 现在,我具有使用javascript onclick显示/隐藏页面的元素。 我要显示的内容包括一个下拉框。 我想做的是调用我编写的python客户端函数,传递选择,从而对数据库进行更改。 该函数已编写,并且前端工作正常,但我不明白如何使用“提交”按钮并获取javascript不仅显示/隐藏元素,而且最终调用此函数。

我不希望刷新页面,到目前为止我的研究使我相信我需要使用AJAX和某种POST。 对此不太确定。 我没有这种事情的经验。 我想知道自己是否在正确的道路上或某个可以帮助我到达那里的地方/某种指南。

没错,您将需要使用AJAX。 这是简单的示例:

template.html

<button type="button" id>Click Me!</button>


{% block inline_js %}
    <script type="text/javascript">
    $(document).ready(function () {
        $(document).on("click",'#button',
            function() {
                $.ajax({
                    type: "POST",
                    data: { action: "delete"},
                    success: function(data){}

</script>

您可以直接在视图中放置AJAX函数。 如果您在AJAX调用的'url'参数中未添加任何内容,它将自动进行调用(您的视图调用了它)。

views.py

def post(self,request, *args, **kwargs):
#Add a AJAX request check. If it is AJAX, redirect to AJAX function
    if self.request.is_ajax():
        return self.ajax(request)

#===========================================================================
# AJAX
#===========================================================================
def ajax(self, request):
    response_dict= {
        'success': True,
    }
    #Your SQL DROP code here...


    return HttpResponse(simplejson.dumps(response_dict), mimetype='application/json')

您必须使用JavaScript发出POST请求,然后在服务器上接收它。 基本思想:您可以使用XMLHttpRequest$ .ajax从客户端发送数据(可能是JSON)(如果您的项目使用jQuery)。 从理论上讲,我也不熟悉Django。 但是根据文档,Django默认情况下无法处理AJAX,因此似乎正是您所需要的: http : //www.dajaxproject.com/dajaxice/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM