搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > SRE运维实践 > django中的ajax

django中的ajax

SRE运维实践 2018-01-26

    

1背景概述

    

    在现在的web场景中,越来越多的使用到异步加载,本篇文章主要用来给出一个最基本的例子,关于使用JQ的ajax请求的发送。

    

    在django中,发送异步请求的时候,get请求和其他的框架基本是一样的,不需要发送其他额外的信息,但是在使用post请求的时候,需要考虑到的是,django一般开启了跨站攻击防护的选项,也就是csrf_token,从而在进行post请求的时候,也必须传过去这个值。


2视图函数


    视图函数的内容如下所示:


def restartoperation(request):

    if request.is_ajax():

        if request.method== "POST":

            print request.POST

            return HttpResponse('HEllo')

    

        判断一个请求是否是ajax请求的主要目的,就是对于这同一个方法,使用ajax请求的时候,可能只需要传输部分的信息,也可能是返回不同的结果,从而使用is_ajax来进行判断,如果对于ajax请求没有特殊的要求,那么无需进行判断。


3路由映射

    

    在django中,将url路径映射到处理的函数,也就是vies中的方法,主要就是路由了,也可以称之为映射,就是一个url对应于一个views方法。如下:


url(r'^restartoperation/$',restartoperation,name='restartoperation'),



4页面JS脚本


    在使用ajax请求的时候,其实最主要的感觉就是页面js的写法,因为这算是前端的活了,界面上的主要js脚本和元素如下所示:


<script>

(function($) {

    $('#restart').click(

    function () {

        var csrf = $("input[name=csrfmiddlewaretoken]").val(); 

        var hostip = $('#hostip').html();

        alert(hostip);

        request = {'csrfmiddlewaretoken':csrf,'hostip':hostip}

        $.ajax({

            type: "POST",

            url: "/webcms/restartoperation/", 

            data: request,

            context: document.body,

            success: function(date){

                if(date == ""){ alert("未查找到对应的IP")};

                $('#result').html(date);

            }

        });

    })

})(jQuery);

</script>


    form表单:


    页面上显示结果的地方如下所示:

django中的ajax

    

    传递的参数如下:


5测试结果




总结


1、django中的ajax请求,当使用post方法的时候,必须要添加form标签里的csrfmiddlewaretoken的值,否则的话,会出现403的结果,会直接被中间件进行forbidden连接。


2、 在使用ajax请求的时候,可以使用get请求,也可以使用post请求,当使用get请求的时候,是将相关的参数封装在url中,并且传输的数据大小是有限制的,使用post的请求的时候,数据是存放在表单form中传输,传输的数据大小没有限制。


3、在进行ajax请求交互的时候,可以直接给出html页面,也可以给出json数据,可以限定返回值的类型,从而做出相应的东西,在例子中,给出的是html代码。


4、 可以改进的地方,在url的地方可以换成tag的形式,从而更加灵活。

    

版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《django中的ajax》的版权归原作者「运维Linux和python」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注运维Linux和python微信公众号

运维Linux和python微信公众号:gh_319dd73ec076

运维Linux和python

手机扫描上方二维码即可关注运维Linux和python微信公众号

运维Linux和python最新文章

精品公众号随机推荐