Django前後端分離

2021-09-25 04:24:23 字數 3431 閱讀 7576

分離常見的問題

http無狀態

token

前端js跨域問題

csrf

spa**是否會影響seo(搜尋引擎優化)效果

是 跪舔流解決

雜湊演算法三大特點

不可逆定長

雪崩 – 輸入修改乙個位元組 串就會變。

jwt有三部分組成。

header

alg : 演算法,預設為hs256

typ : 預設jwt

payload

分為公共宣告和私有宣告。

1. 公共宣告

exp 過期時間

nbf 生效時間 ---不常用

iss 簽發者

aud 簽發面向群體

iat 建立時間

2. 私有宣告

使用者可以根據業務需要新增自己的標識,

安裝django-cors-headers

解壓----進入資料夾

python setup. py install

前端實現邏輯

使用者請求到該頁面壺,js立刻發出非同步請求【跨域】至或書單伺服器

後端伺服器返回json資料

js根據或書單返回資料進行動態渲染頁面

restful

url出現的詞盡量避免使用動詞,盡可能使用名詞。

http對應的method去觸發url代表的資源狀態。

get:拿資料

post:建立資源資料

put/patch:更新資料(全部/區域性)

delete:刪除資料

例子:get /user ; post /token ;

django中提取token的值。

django中cors的設定

安裝django-cors-headers官網

直接pip 將把django公升級到2.0以上,強烈建議用離線安裝方式

配置流程

2,middleware 中新增corsheaders.middleware.corsmiddleware位置盡量靠前,

官方建議『django.middleware.common.commonmiddleware』 上方

3,cors_origin_allow_all 布林值 如果為true 白名單不啟用

4,cors_origin_whitelist =[

""] 當cors_origin_allow_all為false時。填寫可以訪問的名單

5, cors_allow_methods = (

'delete',

'get',

'options',

'patch',

'post',

'put',

)6, cors_allow_headers = (

'accept-encoding',

# 涉及到前端給後端發token的時候。放在request.authorization

'authorization',

'content-type',

'dnt',

'origin',

'user-agent',

# x- 表示http協議意外的請求頭

'x-csrftoken',

'x-requested-with',

)# 關掉url自動補 /

django中restful

資源網路上的乙個實體, 並且每個資源都有乙個獨一無二得uri與之對應;獲取資源-直接訪問uri即可

狀態轉化(state transfer)

訪問乙個uri即發生了一次 客戶端和服務端得互動;此次互動將會涉及到資料和狀態得變化客戶端需要通過某些方式觸發具體得變化 - httpmethod 如 get, post,put,patch,delete 等

restful的特徵

每乙個uri代表一種資源

客戶端和伺服器端之前傳遞著資源的某種表現

客戶端通過http的幾個動作 對 資源進行操作 - 發生『狀態轉化』

如何設計符合restful 特徵的api

協議 - http/https

網域名稱:網域名稱中體現出api字樣,如

版本:https:/ /api.example.com/v1/

路徑 -路徑中避免使用動詞,資源用名詞表示,案例如下

http動詞語義

get(select):從伺服器取出資源(一項或多項)。

post(create):在伺服器新建乙個資源。

put(update):在伺服器更新資源(客戶端提供改變後的完整資源)。

patch(update):在伺服器更新資源(客戶端提供改變的屬性)。

delete(delete):從伺服器刪除資源。

get /zoos:列出所有動物園

post /zoos:新建乙個動物園

get /zoos/id:獲取某個指定動物園的資訊

put /zoos/id:更新某個指定動物園的資訊(提供該動物園的全部資訊)

patch /zoos/id:更新某個指定動物園的資訊(提供該動物園的部分資訊)

delete /zoos/id:刪除某個動物園

get /zoos/id/animals:列出某個指定動物園的所有動物

delete /zoos/id/animals/id:刪除某個指定動物園的指定動物

巧用查詢字串

?limit=10:指定返回記錄的數量

?offset=10:指定返回記錄的開始位置。

?page=2&per_page=100:指定第幾頁,以及每頁的記錄

數。 ?sortby=name&order=asc:指定返回結果按照哪個屬性排

序,以及排序順序。

?type_id=1:指定篩選條件

返回結果

根據http 動作的不同,返回結果的結構也有所不同

get	 /users:返回資源物件的列表(陣列)

get /users/guoxiaonao:返回單個資源物件

post /users:返回新生成的資源物件

put /users/:返回完整的資源物件

patch /users/:返回完整的資源物件

delete /users/:返回乙個空文件

django 前後端分離,ajax

1.直接在前端呼叫第三方的介面 三門峽今日天氣 轉 到 2.呼叫自己資料庫 帶分頁的 後端 csrf exempt def get tongzhi request code 200 msg success 獲取全部資料 tongzhis all list article.objects.filter...

Django前後端分離csrf token獲取方式

一般django開發為了保障避免 csrf 的攻擊,如果使用django的模板渲染頁面,那麼則可以在請求中渲染設定乙個csrftoken的cookie資料,但是如果需要前後端分離,不適用程式設計客棧django的模板渲染功能,怎麼來動態獲取 csrftoken 呢?程式設計客棧 使用這種方式的確可以...

前後端分離

關於前後端分離的一些好的文章推薦 前端框架 為什麼前後端分離 最直白的理解,我認為是因為在開發過程中,前端總是需要等待後端的環境搭建好之後,前端才能獲取相關資料,對於前端的開發影響很大,事實上前端並不關心後端的開發,那麼有沒有方法不讓後端影響前端的開發呢?其實後端提供的是什麼?乙個執行伺服器,乙個就...