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

2022-09-21 15:18:09 字數 1722 閱讀 7128

django是乙個開放源**的web應用框架,由python寫成。採用了mvc的軟體設計模式,即模型m,檢視v和控制器c。它最初是被開發來用於管理勞倫斯出版集團旗下的一些以新uejimuc聞內容為主的**的,即是cms(內容管理系統)軟體。並於2023年7月在bsd許可證下發布。這套框架是以比利時的吉普賽爵士吉他手django reinhardt來命名的。

今天在嘗試呼叫jquery的ajax時發現乙個問題,就是使用get方法伺服器可以正常返回,但是使用post方法卻不行。後來再測試表單方式的post的方法也不行。只要post必報http 403錯誤!非常奇怪。。。   

在網上搜了一大堆資料以後原來是因為django的cross site request forgery protection機制的問題。這個機制是為了保護不受csrf攻擊。什麼是crsf攻擊,桃林部落格中有一段較為淺顯的講解。解決方案django的官網已經提供了根據說明修改後,ajax可以順利post了。

具體辦法是,首先解決表單的post。在settings.py檔案中找到 middleware_classes,在其中加入乙個中介軟體:'django.middleware.csrf.csrfviewmiddleware' ,修改後的**如下:

python**

middleware_cla程式設計客棧sses = (

'django.middleware.common.commonmiddleware',

'django.contrib.sessions.middleware.sessionmiddleware',

'django.middleware.csrf.csrfviewmiddleware',

'django.contrib.auth.middleware.authenticat',

'django.contrib.messages.middleware.messagemiddleware',

'django.middleware.csrf.csrfresponsemiddleware', #加入這個中介軟體

)經過這番修改,可以解決表單方式的post提交http 403問題了。ajax的post提交僅這樣改還不行。還需要鉤上乙個每次提交時的cookie處理過程。也就是每次提交的時候,都觸發這個過程,在提交的http頭上加入csrf token。不過還好,如果你是用jquery來處理ajax的話,django直接送了一段解決問題的**。把它放在乙個獨立的js檔案中,在html頁面中都引入即可。注意這個js檔案必須在jquery的js檔案引入之後,再引入。**我直接複製過來了,如下:

});經過這番折騰,算是可以正常用ajax與django通訊了。

django中ajax的使用

前端的ajax**如下所示:

$.ajax(,

error:function(data)

});後端的相應**的返回方法如下:

本文標題: django框架如何使用ajax的post方法

本文位址:

使用Django框架

在命令列模式下使用pip工具來安裝django,pip工具的安裝方法見此篇 pip install django在python互動模式下 import django django.get version 在命令列模式下 django admin.py startproject demo注意 建立的專...

Django框架基本使用

django框架 1.安裝 2.使用 建立虛擬環境命令 mkvirtualenv 虛擬環境名 建立python3虛擬環境 mkvirtualenv p python3 名字 進入虛擬環境工作 workon 虛擬環境名 檢視機器上有多少個虛擬環境 workon 空格 兩個tab鍵 退出虛擬環境 dea...

django框架models使用

mysql現有表反向生成models類 python manage.py inspectdb 1 生成的類輸出到控制台 python manage.py inspectdb 2 生成的類輸出到檔案 python manage.py inspectdb server models server是應用目...