使用javascript从模板调用函数

Calling a function from a template using javascript

本文关键字:调用 函数 javascript 使用      更新时间:2023-09-26

我是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或$从客户端发送数据(可能是JSON)。ajax(如果您的项目使用jQuery)。理论上是的,我对Django也不熟悉。但是根据文档Django不能默认处理AJAX,所以它似乎是你需要的:http://www.dajaxproject.com/dajaxice/