使用javascript从模板调用函数

时间:2013-06-15 19:21:01

标签: javascript python django

我对Django很新,而且我正在努力做的事情,我似乎不明白怎么做。现在我有使用javascript onclick显示/隐藏页面的元素。我正在展示的内容包括一个下拉框。我想做的是调用我编写的python客户端函数,传递选择,从而对数据库进行更改。函数是写的,我有前端工作,但我不明白如何采取提交按钮,让javascript不仅显示/隐藏元素,但最终调用此函数。

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

2 个答案:

答案 0 :(得分:3)

你是对的,你需要使用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')

答案 1 :(得分:1)

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