这篇文章主要介绍Django框架怎么使用ajax的发布方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
Django是一个开放源代码的网络应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器c,它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手莱因哈特来命名的。
今天在尝试调用jQuery的ajax时发现一个问题,就是使用得到方法服务器可以正常返回,但是使用发布方法却不行。后来再测试表单方式的帖子的方法也不行。只要贴必报HTTP 403错误!非常奇怪…,,,
在网上搜了一大堆资料以后原来是因为Django的跨站请求伪造保护机制的问题。这个机制是为了保护不受csrf攻击。
具体办法是,首先解决表单的职位。在设置。py文件中找到MIDDLEWARE_CLASSES,在其中加入一个中间件:& # 39;django.middleware.csrf.CsrfViewMiddleware& # 39;,修改后的代码如下:
<强> Python代码强>
MIDDLEWARE_CLASSES =, (, ,& # 39;django.middleware.common.CommonMiddleware& # 39;,, ,& # 39;django.contrib.sessions.middleware.SessionMiddleware& # 39;,, ,& # 39;django.middleware.csrf.CsrfViewMiddleware& # 39;,, ,& # 39;django.contrib.auth.middleware.AuthenticationMiddleware& # 39;,, ,& # 39;django.contrib.messages.middleware.MessageMiddleware& # 39;,, ,& # 39;django.middleware.csrf.CsrfResponseMiddleware& # 39;,, #加入这个中间件, )
,,,,经过这番修改,可以解决表单方式的文章提交HTTP 403问题了. ajax的帖子提交仅这样改还不行。还需要钩上一个每次提交时的饼干处理过程。也就是每次提交的时候,都触发这个过程,在提交的HTTP头上加入csrf牌。不过还好,如果你是用jQuery来处理ajax的话,Django直接送了一段解决问题的代码。把它放在一个独立的js文件中,在html页面中都引入即可。注意这个js文件必须在jQuery的js文件引入之后,再引入。代码我直接复制过来了,如下:
<强> js代码
强>
美元(& # 39;html # 39;) .ajaxSend(函数(事件,,xhr,设置),{, ,function getCookie(名字),{, var 才能;cookieValue =,零,, if 才能;(document.cookie ,,, document.cookie !=, & # 39; & # 39;), {, ,,var cookies =, document.cookie.split (& # 39;; & # 39;),, ,,for (var 小姐:=,0;,小姐:& lt;, cookies.length;,我+ +),{, ,,,var cookie =, jQuery.trim(饼干[我]),, ,,,//,Does 却;能够cookie string begin with 从而name 想要什么?我方表示歉意, ,,,if (cookie.substring (0,, name.length +, 1),==,(时间+ name & # 39;=& # 39;)), {, ,,,,cookieValue =, decodeURIComponent (cookie.substring (name.length +, - 1)),, ,,,,休息,, ,,,}, ,,}, ,,}, cookieValue; return 才能; }大敌; ,if (! (http:/^。*/test (settings.url), | |,/^ https:。*/test (settings.url))), {,//才能,Only send 从而token 用relative URLs ,即只在本地只 xhr.setRequestHeader才能(“X-CSRFToken",, getCookie (& # 39; csrftoken& # 39;)),, }大敌; });
,经过这番折腾,算是可以正常用ajax与Django通信了。
<强> Django中ajax的使用强>
,前端ajax的代码如下所示:
. ajax({美元 ,类型:& # 39;得到# 39; ,url: & # 39;/存储/ds_mgmt_wx/ajax_handle& # 39; ,数据类型:& # 39;html # 39; ,成功:功能(数据) {才能 ,,警报(数据); ,,}, ,错误:功能(数据) ,{ 警报(数据);才能, ,} });
后端的相应代码的返回方法如下:
if act_job ==, & # 39; ajax_handle& # 39;: return 才能HttpResponse (& # 39; ajax_handle& # 39;)
以上是“Django框架怎么使用ajax的发布方法”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!