欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django框架如何使用ajax的post方法

 更新時間:2015年09月16日 10:13:20   投稿:mrr  
Django是一個開放源代碼的Web應用框架,由Python寫成,本文給大家介紹Django框架如何使用ajax的post方法,感興趣的朋友跟著小編一起來學習學習吧

Django是一個開放源代碼的Web應用框架,由Python寫成。采用了MVC的軟件設計模式,即模型M,視圖V和控制器C。它最初是被開發(fā)來用于管理勞倫斯出版集團旗下的一些以新聞內容為主的網站的,即是CMS(內容管理系統)軟件。并于2005年7月在BSD許可證下發(fā)布。這套框架是以比利時的吉普賽爵士吉他手Django Reinhardt來命名的。

今天在嘗試調用jQuery的ajax時發(fā)現一個問題,就是使用GET方法服務器可以正常返回,但是使用POST方法卻不行。后來再測試表單方式的POST的方法也不行。只要POST必報HTTP 403錯誤!非常奇怪。。。   

在網上搜了一大堆資料以后原來是因為Django的Cross Site Request Forgery protection機制的問題。這個機制是為了保護不受csrf攻擊。什么是crsf攻擊,桃林博客中有一段較為淺顯的講解。解決方案Django的官網已經提供了http://docs.djangoproject.com/en/dev/ref/contrib/csrf/,根據說明修改后,ajax可以順利Post了。

具體辦法是,首先解決表單的POST。在settings.py文件中找到 MIDDLEWARE_CLASSES,在其中加入一個中間件:'django.middleware.csrf.CsrfViewMiddleware' ,修改后的代碼如下:

Python代碼

MIDDLEWARE_CLASSES = ( 
 'django.middleware.common.CommonMiddleware', 
 'django.contrib.sessions.middleware.SessionMiddleware', 
 'django.middleware.csrf.CsrfViewMiddleware', 
 'django.contrib.auth.middleware.AuthenticationMiddleware', 
 'django.contrib.messages.middleware.MessageMiddleware', 
 'django.middleware.csrf.CsrfResponseMiddleware', #加入這個中間件 
) 

     經過這番修改,可以解決表單方式的POST提交HTTP 403問題了。ajax的Post提交僅這樣改還不行。還需要鉤上一個每次提交時的cookie處理過程。也就是每次提交的時候,都觸發(fā)這個過程,在提交的http頭上加入csrf token。不過還好,如果你是用jQuery來處理ajax的話,Django直接送了一段解決問題的代碼。把它放在一個獨立的js文件中,在html頁面中都引入即可。注意這個js文件必須在jquery的js文件引入之后,再引入。代碼我直接復制過來了,如下:

Js代碼

$('html').ajaxSend(function(event, xhr, settings) { 
 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; 
 } 
 if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) { 
  // Only send the token to relative URLs i.e. locally. 
  xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken')); 
 } 
}); 

 經過這番折騰,算是可以正常用ajax與Django通信了。

Django中ajax的使用

 前端的ajax代碼如下所示:

$.ajax({
 type:'GET',
 url:'/store/ds_mgmt_wx/ajax_handle',
 dataType:'html',
 success:function(data)
  {
   alert(data);
  },
 error:function(data)
 {
  alert(data); 
 }
});

后端的相應代碼的返回方法如下:

if act_job == 'ajax_handle':
  return HttpResponse('ajax_handle')

關于Django框架如何使用ajax的post方法就介紹完了,看完之后有何感想,歡迎小伙伴們分享自己的見解,祝大家心情愉快,工作順利。

相關文章

  • AJAX實現省市縣三級聯動效果

    AJAX實現省市縣三級聯動效果

    這篇文章主要為大家詳細介紹了AJAX實現省市縣三級聯動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 詳解Ajax跨域(jsonp) 調用JAVA后臺

    詳解Ajax跨域(jsonp) 調用JAVA后臺

    本篇文章主要介紹了詳解Ajax跨域(jsonp) 調用JAVA后臺 ,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Ajax中要注意的問題

    Ajax中要注意的問題

    Ajax中要注意的問題...
    2007-04-04
  • 基于CORS實現WebApi Ajax 跨域請求解決方法

    基于CORS實現WebApi Ajax 跨域請求解決方法

    這篇文章主要介紹了基于CORS實現WebApi Ajax 跨域請求解決方法,需要的朋友可以參考下
    2017-08-08
  • js裝載xml文件然后發(fā)向服務器的實現代碼

    js裝載xml文件然后發(fā)向服務器的實現代碼

    js裝載xml文件然后發(fā)向服務器,具體的代碼可以參考下面的思路。
    2009-01-01
  • Ajax實現步驟和原理解析

    Ajax實現步驟和原理解析

    Ajax是一種用于創(chuàng)建快速動態(tài)網頁的技術,Ajax的工作原理相當于在用戶和服務器之間加了—個中間層(AJAX引擎),使用戶操作與服務器響應異步化,這篇文章主要介紹了Ajax實現步驟和原理,需要的朋友可以參考下
    2023-11-11
  • AjaxFileUpload結合Struts2實現多文件上傳(動態(tài)添加文件上傳框)

    AjaxFileUpload結合Struts2實現多文件上傳(動態(tài)添加文件上傳框)

    本文是腳本之家小編給大家分享的AjaxFileUpload結合Struts2實現多文件上傳功能,如果項目需求是不確定多少個文件,我們需要動態(tài)的添加文件上傳框,具體實現代碼大家參考下本文
    2017-09-09
  • Ajax 對象 包含post和get兩種異步傳輸方式

    Ajax 對象 包含post和get兩種異步傳輸方式

    Ajax對象接受一個對象字面量為參數,這個對象字面量中包含method,url,success,params,fail參數
    2009-07-07
  • 菜鳥蔡之Ajax復習第三篇(Ajax之無刷新登錄)

    菜鳥蔡之Ajax復習第三篇(Ajax之無刷新登錄)

    無刷新登錄大家也許沒寫過,但是一定都是聽說過的,很早以前就想用這個小技術在自己做的小項目中用一把了,但都沒有付出過實踐,在網上查也沒有查到具體完整的代碼,在這里,今天菜鳥蔡也來試了一把,獻丑了,希望對初學的童鞋有點幫助
    2012-11-11
  • 使用ajax技術無刷新動態(tài)調用股票信息

    使用ajax技術無刷新動態(tài)調用股票信息

    新浪的財金頻道一直感覺做得很好。但由于最近網速慢的緣故,查看股票信息時網頁老是打不開。這幾天一直在研究ajax,于是用jquery自己做了一個自動讀取新浪股票實時數據的頁面。
    2008-11-11

最新評論