新建项目、配置项目啥的咱就不说了,直奔主题!
1.新建测试方法
views.ajax
#from django.views.decorators.csrf import csrf_exempt
#@csrf_exempt : 设置该方法忽略CSRF验证
def ajax_test(request):
if request.is_ajax():
if request.method == 'GET':
message = "This is an XHR GET request"
elif request.method == 'POST':
message = "This is an XHR POST request"
# Here we can access the POST data
print request.POST
else:
message = "No XHR"
return HttpResponse(message)
(r'^ajax/$',ajax_test),
2.test.html测试页
<html>
<head>
<title>ajax test</title>
<script type="text/javascript" src="/static/jquery.1.7.2.js"></script><!--最好用最新版本的吧-->
<script type="text/javascript">
$(function(){
//get测试方法
//data:"This is an XHR GET request"
$("#get").click(function(){
$.get("/ipartyapp/ajax", function(data){
alert(data);
});
});
//POST测试方法
//data:"This is an XHR POST request"
$("#post").click(function(){
$.ajax({
type: "POST",
url: "/yourapp/ajax/", //!!!!一定要加上最后的‘/’!!!!
data: "name=John&location=Boston",
success: function(msg){
alert( "Data Saved: " + msg );
},
error: function(msg){
alert(msg);
}
});
});
})
// 获取令牌
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;
}
//验证方法是否安全
function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
//设置全局 AJAX 默认选项
$.ajaxSetup({
crossDomain: false,
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type)) {
//获取csrf令牌
var csrftoken = getCookie('csrftoken');
//将令牌信息加入请求头中,这样就可以通过验证了~~
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});
</script>
</head>
<body>
{% csrf_token %}
<input type="button" id="get" value="get"/>
<input type="button" id="post" value="post"/>
</body>
</html>
好啦~基本的东西都在啦,想了解更详细,参见 https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax