专栏首页编程Django分离JS代码,处理AJax错误请求

Django分离JS代码,处理AJax错误请求

在写Django时候,遇到个错误,这里进行下记录。

都知道Django或者Flask中通过下面这种方式

{%blockjs%}{%endblock%}

能够直接将js代码进行分离,使得单个的Template代码能够大大的减少,但是在某个模板中,如果需要大量的Ajax请求时,这里的block同样会变得很臃肿。

最近遇到的问题:

并且最近在进行Ajax的POST请求时候,遇到Illegal invocation这个错误。查了下,大概就是传递了个对象导致的,但是从自己代码上看,好像没有,因此找了下,发现在进行AJax提交时,默认会将数据转换成对象,并且会进行序列化处理,特别是在使用AJax进行文件上传时候。

Django中,开启CSRF的防护时,在进行POST提交时必须附带csrf_token,但是将JS分离后,独立的JS文件中是无法获取到

{{ csrf_token }}的,因此我只能采用传参的方式来解决。

使用block分离js后,还有很多相同功能的操作,导致代码功能极其难看,比如批量删除,因此对相同功能的代码进行了提取。

下面以复选框批量删除操作来说明上面的问题

多个复选框

复用代码,分离请求

分离JS代码,抽离功能

这里重点在Ajax请求时的两个参数:

processData: false,

contentType: false,

processData是让接收的数据别序列化,contentType主要是不处理Content-Type请求头。对于这里的Demo,两个参数都不能少。但是一般出现Illegal invocation错误时候,设置第一个即可解决。

https://zhidao.baidu.com/question/1926250710050869147.html

https://segmentfault.com/a/1190000007207128

本文来自企鹅号 - 安全小林哥媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • HttpClient使用详解

    Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不...

    企鹅号小编
  • IDC+BIM,或将带来数据中心新革命

    IDC+BIM,或将带来数据中心新革命。你是选择做这场革命的推动者、追随者,还是旁观者? 一、什么是BIM? 美国国家BIM标准对BIM的定义很清晰: 1.一个...

    企鹅号小编
  • 改进异常处理的 6 条建议

    来源:ImportNew - 唐尤华 , 合理地使用异常处理可以帮你节省数小时(甚至数天)调试时间。一个乘法异常会毁掉你的晚餐乃至周末计划。如果处置不及时,甚至...

    企鹅号小编
  • 规范-编码规范总结(微信分销系统)

    项目整体架构技术栈 Spring、SpringMVC、MyBatis、MySQL、JSP、OSS、定时器、微信相关接口

    秋日芒草
  • 群晖系统Synology DSM安装ipkg包管理

    到现在为止,也没弄清楚群晖系统发行版到底是什么,暂且就叫做Synology DSM系统吧,常用的源安装命令(yum/apg-get/ipkg等)都使用不了,不过...

    徐大嘴
  • WordPress评论滑动/拉链解锁myQaptcha代码版及部署方法

    虽然博客取消了文章页面评论,仅剩下留言板的评论,但张戈还是要尽力做到尽善尽美,将用户体验做到极致!在防止垃圾评论的同时,尽量让评论变得更加简单快捷。 于是就想到...

    张戈
  • 我是如何走进黑客世界的?

    我想给你一把打开这扇门的钥匙,而你要做的便是静静的聆听接下来的故事。挖掘 0day 一般需要掌握fuzzing,IDA Pro反汇编WinDbg调试等技术。

    HACK学习
  • Flutter中的AppBar、TabBar和TabController——顶部切换栏是如何实现的

    实际上,AppBar 这个组件有许多的属性,我们通过这些属性,可以用来定义顶部导航栏的各种样式。下面我将为你一一说明这些属性的作用:

    拉维
  • 接口测试神器:postman了解一下

    HTTP的接口测试工具有很多,可以进行http请求的方式也有很多,但是可以直接拿来就用,而且功能还支持的不错的,我使用过的来讲,还是postman比较上手。

    Java编程指南
  • 麦肯锡汽车行业报告:通向自动驾驶之路的五大障碍

    机器之心

扫码关注云+社区

领取腾讯云代金券