[django1.2+python2.7]ajax异步post数据,出现Forbidden的错误

简介:

假设我们现在需要ajax异步post数据到服务进行处理,下面是客户端的javascript代码。

 

 
  1. $("#ajaxpost").click(function(){ 
  2.         data=$('form').serializeArray(); 
  3.         data=$.toJSON(data); 
  4.         //alert(data); 
  5.          
  6.         $.ajax({ 
  7.             url:"/ajax_post/"
  8.             type:"POST"
  9.             contentType:"application/json; charset=utf-8"
  10.             //dataType:"json", 
  11.             data:data, 
  12.             success:function(data, textStatus, jqXHR){ 
  13.                 alert(decodeURIComponent(data)); 
  14.             }, 
  15.             error:function(jqXHR, textStatus, errorThrown){ 
  16.                 alert(textStatus); 
  17.                 alert(errorThrown); 
  18.             } 
  19.         }); 
  20.          
  21.          
  22.         return false
  23.          
  24.          
  25.     }); 

下面是服务端view的处理代码

 

 
  1. def ajax_post(request): 
  2.     if request.is_ajax() and request.method=="POST"
  3.         message="hello, ajax",request.raw_post_data 
  4.         json_data=simplejson.loads(request.raw_post_data) 
  5.         message=json_data 
  6.          
  7.     else
  8.         message="hello" 
  9.     return HttpResponse(message) 

完成之后,进行测试,发现弹出了错误对话框,而不是正确的对话框。

对话框提示内容

“FORBIDDEN”

解决办法是在python的view方法前面添加一个decorater

[@csrf_exempt]

 

 
  1. @csrf_exempt 
  2. def ajax_post(request): 
  3.     if request.is_ajax() and request.method=="POST"
  4.         message="hello, ajax",request.raw_post_data 
  5.         json_data=simplejson.loads(request.raw_post_data) 
  6.         message=json_data 
  7.         #message=json_data['data'] 
  8.     else
  9.         message="hello" 
  10.     return HttpResponse(message) 

关于CSRF(Cross Site Request Forgery)的一些内容可以参考官方文档:

https://docs.djangoproject.com/en/1.2/ref/contrib/csrf/




本文转自 virusswb 51CTO博客,原文链接:http://blog.51cto.com/virusswb/796649,如需转载请自行联系原作者

目录
相关文章
|
17天前
|
Linux 数据库管理 Python
CentOS7编译安装Python3.10(含OpenSSL1.1.1安装),创建虚拟环境,运行Django项目(含sqlite版本报错)
CentOS7编译安装Python3.10(含OpenSSL1.1.1安装),创建虚拟环境,运行Django项目(含sqlite版本报错)
100 4
|
13天前
|
开发框架 数据库 开发者
Web开发新境界:用Python玩转Django和Flask!
【6月更文挑战第12天】Python的Web开发框架Django和Flask各有千秋。Django是全能型框架,适合快速开发大型应用,提供ORM、模板引擎、URL路由和后台管理等全面功能。Flask则轻量级且灵活,适用于小型到中型应用,以其简单易用、高度可扩展和灵活路由著称。两者结合使用,能应对各种Web开发需求。
|
11天前
|
前端开发 JavaScript 数据安全/隐私保护
计算机Python项目|django学生成绩管理系统
计算机Python项目|django学生成绩管理系统
|
2天前
|
数据挖掘 程序员 调度
Python并发编程之协程与异步IO
传统的多线程和多进程模型在处理大规模并发时存在一些性能瓶颈和资源消耗问题。本文将重点介绍Python中基于协程和异步IO的并发编程方法,探讨其工作原理和实际应用,帮助开发者更好地理解并利用Python的并发编程能力。
|
1天前
|
Python
Python异步执行CMD命令的技巧与实践
Python异步执行CMD命令的技巧与实践
9 3
|
8天前
|
存储 JavaScript 前端开发
Python Django下的实现注册验证码
摘要: 使用Python生成随机验证码图像,包括干扰线和噪点,保存到静态文件夹,并将验证码文本存储到数据库。数据库表包含ID、验证码图片路径和验证码文本。JavaScript函数`getRandomInt`生成1到300的随机数,用于请求对应数据库条目的验证码和图片。XMLHttpRequest发送POST请求到服务器,视图函数返回指定ID的验证码图片路径,实现验证码的动态刷新。
|
11天前
|
小程序 前端开发 JavaScript
计算机Python项目|django傣族节日及民间故事推广小程序
计算机Python项目|django傣族节日及民间故事推广小程序
|
13天前
|
Python
并发编程,Python让你轻松驾驭多线程与异步IO!
【6月更文挑战第12天】本文探讨了Python中的并发编程,包括多线程和异步IO。通过`threading`模块展示了多线程编程,创建并运行多个线程以并发执行任务。同时,使用`asyncio`库演示了异步IO编程,允许在单线程中高效处理多个IO操作。两个示例代码详细解释了如何在Python中实现并发,展现了其在提升程序性能和响应速度方面的潜力。
|
20天前
|
SQL 前端开发 关系型数据库
28. Python Web 编程:Django 基础教程
28. Python Web 编程:Django 基础教程
20 2
|
22天前
|
缓存 安全 中间件
Python小白必备!清华大牛整理的《Django零基础入门到精通》手册
Django 是 Python 社区的两大最受欢迎的 Web 框架之一(另一个是 Flask)。凭借功能强大的脚手架和诸多开箱即用的组件,可以使你能够以最小的代价构建和维护高质量的Web应用。 从好的方面来看,Web 开发激动人心且富于创造性;从另一面来看,它却是份繁琐而令人生厌的工作。 通过减少重复的代码,Django 使你能够专注于 Web 应用上有趣的关键性的东西。 为了达到这个目标,Django提供了通用Web开发模式的高度抽象,提供了频繁进行的编程作业的快速解决方法,以及为“如何解决问题”提供了清晰明了的约定。 同时,Django 尝试留下一些方法,来让你根据需要在framework