[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小时前
|
机器学习/深度学习 算法 Python
数据分享|Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户
数据分享|Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户
|
23小时前
|
机器学习/深度学习 算法 算法框架/工具
数据分享|PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子
数据分享|PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子
|
23小时前
|
机器学习/深度学习 数据挖掘 网络架构
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
|
1天前
|
数据挖掘 数据处理 索引
如何使用Python的Pandas库进行数据筛选和过滤?
Pandas是Python数据分析的核心库,提供DataFrame数据结构。基本步骤包括导入库、创建DataFrame及进行数据筛选。示例代码展示了如何通过布尔索引、`query()`和`loc[]`方法筛选`Age`大于19的记录。
8 0
|
1天前
|
机器学习/深度学习 算法 数据挖掘
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享-2
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
19 1
|
2天前
|
数据处理 Python
如何使用Python的Pandas库进行数据排序和排名
【4月更文挑战第22天】Pandas Python库提供数据排序和排名功能。使用`sort_values()`按列进行升序或降序排序,如`df.sort_values(by='A', ascending=False)`。`rank()`函数用于计算排名,如`df['A'].rank(ascending=False)`。多列操作可传入列名列表,如`df.sort_values(by=['A', 'B'], ascending=[True, False])`和分别对'A'、'B'列排名。
13 2
|
3天前
|
Python
如何使用Python的Pandas库进行数据缺失值处理?
Pandas在Python中提供多种处理缺失值的方法:1) 使用`isnull()`检查;2) `dropna()`删除含缺失值的行或列;3) `fillna()`用常数、前后值填充;4) `interpolate()`进行插值填充。根据需求选择合适的方法处理数据缺失。
29 9
|
JSON 前端开发 数据格式
django中ajax post数据时request.POST获取数组问题
1、前言 最近在使用django开发web页面时,使用ajax的post参数中带有数组,然后在 request.POST 里获取的数组时,数组变成了一个元组!!!官方给出的通过 request.
3572 0
|
5月前
|
XML 前端开发 JavaScript
什么是Ajax和jquery
什么是Ajax和jquery
39 0
|
4月前
|
JSON 前端开发 Java
利用Spring Boot处理JSON数据实战(包括jQuery,html,ajax)附源码 超详细
利用Spring Boot处理JSON数据实战(包括jQuery,html,ajax)附源码 超详细
58 0