1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Django框架如何使用ajax的post方法

Django框架如何使用ajax的post方法

时间:2022-08-19 19:49:01

相关推荐

Django框架如何使用ajax的post方法

web前端|js教程

Django,ajax,使用

web前端-js教程

Django是一个开放源代码的Web应用框架,由Python写成,本文给大家介绍Django框架如何使用ajax的post方法,感兴趣的朋友一起来学习学习吧

erp asp源码,vscode不能剪贴,yoga14安装ubuntu,tomcat 老版本,c# sqlite 使用,营销利器插件包,前端没用过框架,数据爬虫有几种,微信登录php,seo深度解析电子版,jsp作业 商品网站源码,jquery分享网页插件下载,dede学院模板,文件上传页面,防串货管理系统源码,java程序代码都需要背过吗lzw

Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。

im 网页源码,ubuntu卡在启动页面,tomcat7升级8,爬虫获取所有cookie,什么叫php框架技术外包教程,学习seo推荐lzw

今天在尝试调用jQuery的ajax时发现一个问题,就是使用GET方法服务器可以正常返回,但是使用POST方法却不行。后来再测试表单方式的POST的方法也不行。只要POST必报HTTP 403错误!非常奇怪。。。

家教培训类网站源码,ubuntu可以开发ios,慢慢买爬虫机制,采购php,河源seo服务lzw

在网上搜了一大堆资料以后原来是因为Django的Cross Site Request Forgery protection机制的问题。这个机制是为了保护不受csrf攻击。什么是crsf攻击,桃林博客中有一段较为浅显的讲解。解决方案Django的官网已经提供了/en/dev/ref/contrib/csrf/,根据说明修改后,ajax可以顺利Post了。

具体办法是,首先解决表单的POST。在settings.py文件中找到 MIDDLEWARE_CLASSES,在其中加入一个中间件:’django.middleware.csrf.CsrfViewMiddleware’ ,修改后的代码如下:

Python代码

MIDDLEWARE_CLASSES = ( monMiddleware, django.contrib.sessions.middleware.SessionMiddleware, django.middleware.csrf.CsrfViewMiddleware, django.contrib.auth.middleware.AuthenticationMiddleware, django.contrib.messages.middleware.MessageMiddleware, django.middleware.csrf.CsrfResponseMiddleware, #加入这个中间件 )

经过这番修改,可以解决表单方式的POST提交HTTP 403问题了。ajax的Post提交仅这样改还不行。还需要钩上一个每次提交时的cookie处理过程。也就是每次提交的时候,都触发这个过程,在提交的http头上加入csrf token。不过还好,如果你是用jQuery来处理ajax的话,Django直接送了一段解决问题的代码。把它放在一个独立的js文件中,在html页面中都引入即可。注意这个js文件必须在jquery的js文件引入之后,再引入。代码我直接复制过来了,如下:

Js代码

$(html).ajaxSend(function(event, xhr, settings) { function getCookie(name) { var cookieValue = null; if (document.cookie && document.cookie != \) { var cookies = document.cookie.split(;); for (var i = 0; i < cookies.length; i++) {var cookie = jQuery.trim(cookies[i]);// Does this cookie string begin with the name we want?if (cookie.substring(0, name.length + 1) == (name + =)) {cookieValue = decodeURIComponent(cookie.substring(name.length + 1));break;} } } return cookieValue; } if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) { // Only send the token to relative URLs i.e. locally. xhr.setRequestHeader("X-CSRFToken", getCookie(csrftoken)); } });

经过这番折腾,算是可以正常用ajax与Django通信了。

Django中ajax的使用

前端的ajax代码如下所示:

$.ajax({ type:GET, url:/store/ds_mgmt_wx/ajax_handle, dataType:html, success:function(data) { alert(data); }, error:function(data) { alert(data); }});

后端的相应代码的返回方法如下:

if act_job == ajax_handle: return HttpResponse(ajax_handle)

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

详解ajax +jtemplate实现动态分页

Ajax在请求过程中显示进度的简单实现

JQuery Ajax动态生成Table表格

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。