前端知識筆記(二)———Django與Ajax

特點:

? ? ? ? 異步提交

? ? ? ? 局部刷新

例子:github注冊

動態獲取用戶名實時的跟后端確認并實時的展示到前端(局部刷新)?

朝后端發送請求的方式
? ? ? ? 1.瀏覽器地址欄直接輸入url回車 -----》get請求

? ? ? ? 2.a標簽的href屬性 ?-----》get請求

? ? ? ? 3.form表單 -----》get請求、post請求

? ? ? ? 4.ajax -----》 get請求、post請求

真正的ajax原生,需要使用js操作,jq的ajax方法是對原生js的封裝,方便咱們使用

(其他框架也可以,原理是一樣的)

前后端混合項目中,我們通常使用jq的ajax實現 js和后端異步交互
? ? ? ? jq操作dom
? ? ? ? jq發ajax請求
前后端分離項目中,我們會使用另一個第三方庫,實現 js和后端異步交互(axios)
?

寫一個例子:

頁面上有三個input框,前兩個框輸入數字,點擊提交,朝后端發送ajax請求,后端計算出結果再返回給前端,動態展示到第三個input框中,整個頁面不能刷新,也不能在前端計算

html代碼

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<input type="text" id="d1">+<input type="text" id="d2">=<input type="text" id="d3">
<button id="btn">提交</button>
<script>// 先給按鈕一個點擊事件$('#btn').click(function (){// 朝后端發送ajax請求$.ajax({// 1.指定朝哪個后端發送ajax請求url:'', // 不寫就是朝當前地址提交// 2.請求方式type:'post', // 不指定就是get,都是小寫// 3.數據data:{'l1':$('#d1').val(),'l2':$('#d2').val()},// 4.回調函數:當后端給你返回結果的時候會自動觸發 args接收后端返回的結果success:function (args) {$('#d3').val(args)}})})
</script>
</body>
</html>

views代碼

from django.shortcuts import render,HttpResponsedef ab_ajax(request):if request.method=='POST':l1 = request.POST.get('l1')l2 = request.POST.get('l2')#先轉成整型再加l3=int(l1)+int(l2)return HttpResponse(l3)return render(request,'ajax.html')

前后端傳輸數據的編碼格式(contentType)
因為get請求數據就是直接放在url后面的(url?user=kk$pwd=123),所以主要看下post請求的編碼格式

向后端發送post請求的方式
? ? ? ? 1.form表單

? ? ? ? 2.ajax請求

前后端傳輸數據的編碼格式

? ? ? ? urlencoded

? ? ? ? formdata

? ? ? ? json

? ? ? ? form表單

默認的編碼格式是urlencoded

數據格式:user=kk&pwd=123 ? ? ? ?

Django后端針對符合urlencoded編碼格式的數據會自動幫你解析封裝到request.POST中?

user=kk&pwd=123 ? ? --------》 ? request.POST

如果把編碼格式改成formdata,那么針對普通的鍵值對還是解析到request.POST中, 而將文件解析到request.FILES中

form表單是沒辦法發送json格式數據的?

ajax默認的編碼格式是urlencoded

ajax發送json格式數據
?

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<button id="d1">點我</button>
<script>$('#d1').click(function () {$.ajax({url:'',type:'post',data:JSON.stringify({'username':'kk','age':12}),contentType:'application/json',  //指定編碼格式success:function () {}})})
</script>
</body>
</html>

ajax發送json格式數據需要注意點

? ? ? ? 1.contentType參數指定成:applicaton/json

? ? ? ? 2.數據是真正的json格式數據

? ? ? ? 3.Django后端不會幫你處理json格式數據,需要你自己去request.body獲取并處理

ajax發送文件
1. ?ajax發送文件需要借助于js內置對象FormData

html
?

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<p>username<input type="text" id="d1"></p>
<p>password<input type="text" id="d2"></p>
<p><input type="file" id="d3"></p>
<button id="d4">點我</button>
<script>//點擊按鈕朝后端發送普通鍵值對和文件數據$('#d4').on('click',function () {//需要先利用FormData內置對象let formDataObj=new FormData();//2 添加普通的鍵值對formDataObj.append('username',$('#d1').val());formDataObj.append('password',$('#d2').val());//3添加文件對象formDataObj.append('myfile',$('#d3')[0].file[0]);//4將對象基于發送給后端$.ajax({url:'',type:'post',data:formDataObj, //直接將對象放在data后面即可//ajax發送文件必須指定兩個參數contentType:false, //不需使用任何編碼,Django后端都能自動識別formdata對象processData: false, //告訴你的瀏覽器不要對你的數據進行任何處理success:function () {}})})
</script>
</body>
</html>

2. ?ajax發送文件必須指定兩個參數:
? ? ? ? ? ? contentType:false, ?//不需使用任何編碼,Django后端都能自動識別formdata對象
? ? ? ? ? ? processData: false, ?//告訴你的瀏覽器不要對你的數據進行任何處理
3. ?Django后端能夠直接識別formdata對象并且能夠將內部的普通鍵值自動解析并封裝到request.POST中,文件數據自動解析并封裝到request.FILES中

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/210728.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210728.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210728.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python ipaddress模塊介紹

目錄 創建 Address/Network/Interface 對象 關于IP版本的說明 IP主機地址 定義網絡 主機接口 審查 Address/Network/Interface 對象 Network 作為 Address 列表 比較運算 將IP地址與其他模塊一起使用 實例創建失敗時獲取更多詳細信息 概述 本文檔旨在簡要介紹 ipaddr…

【大數據-Hadoop】從入門到源碼編譯-概念篇

【大數據-Hadoop】從入門到源碼編譯-概念篇 Hadoop與大數據生態&#xff08;一&#xff09;Hadoop是什么&#xff1f;&#xff08;二&#xff09;Hadoop組成1. HDFS1.1 NameNode&#xff08;nn&#xff09;1.2 DataNode&#xff08;dn&#xff09;1.3 Secondary NameNode&#…

記一次堆內外內存問題的排查和優化

為優化淘寶帶寬成本&#xff0c;我們在網關 SDK&#xff08;Java&#xff09;統一使用 ZSTD 替代 GZIP 壓縮以獲取更高的壓縮比&#xff0c;從而得到更小的響應包。具體實現采用官方推薦的 zstd-jni 庫。zstd-jni 會調用 zstd 的 c 庫。 背景 在性能壓測和優化過程中&#xff0…

React和Preact 這樣處理className更優雅

React和Preact寫className&#xff0c;我不太習慣使用模板字符串&#xff0c;不好看&#xff0c;看起來也不直觀&#xff0c;寫了如下兩個庫&#xff1a; react-runtime-clsx 和 preact-runtime-clsx&#xff0c;來輔助開發&#xff0c;可以更方便的處理className的問題&#x…

nodejs微信小程序+python+PHP北京地鐵票務APP-計算機畢業設計推薦 -安卓

目 錄 摘 要 I ABSTRACT II 目 錄 II 第1章 緒論 1 1.1背景及意義 1 1.2 國內外研究概況 1 1.3 研究的內容 1 第2章 相關技術 3 2.1 nodejs簡介 4 2.2 express框架介紹 6 2.4 MySQL數據庫 4 第3章 系統分析 5 3.1 需求分析 5 3.2 系統可行性分析 5 3.2.1技術可行性&#xff1a;…

STM32F103

提示&#xff1a;來源正點原子&#xff0c;參考STM32F103 戰艦開發指南V1.3PDF資料 文章目錄 前言一、pandas是什么&#xff1f;二、使用步驟 1.引入庫2.讀入數據總結 前言 提示&#xff1a;這里可以添加本文要記錄的大概內容&#xff1a; 開發環境硬件普中科技&#xff0c;接…

C++相關閑碎記錄(6)

1、使用shared_ptr #include <iostream> #include <memory> #include <set> #include <deque> #include <algorithm> #include <string>class Item { private:std::string name;float price; public:Item(const std::string& n, floa…

【Centos】

一、Virtualbox安裝Centos 1、Virtualbox 下載地址: Virtualbox 2、Centos 下載地址: Centos 3、Virtualbox安裝Centos教程 Virtualbox安裝Centos教程: Virtualbox安裝Centos教程

光學遙感顯著目標檢測初探筆記總結

目錄 觀看地址介紹什么是顯著性目標檢測根據不同的輸入會有不同的變體(顯著性目標檢測家族)目前這個領域的挑戰 技術方案論文1(2019)論文2(2021)論文3(2022) 未來展望 觀看地址 b站鏈接 介紹 什么是顯著性目標檢測 一張圖片里最吸引注意力的部分就是顯著性物體&#xff0c;…

vue3 vue-router 導航守衛 (五)

在Vue 3中&#xff0c;導航守衛仍然是一個重要的概念&#xff0c;用于在路由切換時執行一些特定的邏輯。Vue Router提供了多個導航守衛&#xff0c;包括全局守衛、路由獨享守衛和組件內守衛。可以在路由切換時執行一些特定的邏輯&#xff0c;例如身份驗證、權限控制、數據加載等…

C++STL詳解+代碼分析+典例講解

vector 的介紹&#xff1a; 1、vector是表示可變大小數組的序列容器。 2、vector就像數組一樣&#xff0c;也采用的連續空間來存儲元素&#xff0c;這也意味著可以采用下標對vector的元素進行訪問。 3、vector與普通數組不同的是&#xff0c;vector的大小是可以動態改變的。 4、…

基于物聯網的智能倉管理系統方案

基于物聯網的智能倉管理系統方案 一、項目背景 隨著企業業務的快速發展&#xff0c;傳統的人工倉庫管理方式已經無法滿足現代企業的需求。倉庫運營效率低下、貨物出入庫錯誤、庫存不準確等問題不斷涌現。因此&#xff0c;我們提出一個基于物聯網技術的智能倉管理系統方案&…

Redis 五大經典業務問題

一 緩存穿透 緩存穿透是指當請求的數據既不在緩存中也不存在于數據庫中時&#xff0c;請求會直接穿透緩存層&#xff0c;到達數據庫層。這通常是由于惡意攻擊或者程序錯誤造成的&#xff0c;比如攻擊者故意請求不存在的大量數據&#xff0c;導致緩存不命中&#xff0c;所有的請…

智能優化算法應用:基于被囊群算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用&#xff1a;基于被囊群算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用&#xff1a;基于被囊群算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.被囊群算法4.實驗參數設定5.算法結果6.參考文…

Moco框架的搭建使用

一、前言   之前一直聽mock&#xff0c;也大致了解mock的作用&#xff0c;但沒有具體去了解過如何用工具或框架實現mock&#xff0c;以及也沒有考慮過落實mock&#xff0c;因為在實際的工作中&#xff0c;很少會考慮用mock。最近在學java&#xff0c;剛好了解到moco框架是用于…

城市基礎設施智慧路燈改造的特點

智慧城市建設穩步有序推進。作為智慧城市的基礎設施&#xff0c;智能照明是智慧城市的重要組成部分&#xff0c;而叁仟智慧路燈是智慧城市理念下的新產品。隨著物聯網和智能控制技術的飛速發展&#xff0c;路燈被賦予了新的任務和角色。除了使道路照明智能化和節能化外&#xf…

安全掃描五項簡介

目錄 安掃五項 1.代碼檢測 2.主機基線 nginx合規檢查 麒麟基線 3.WEB掃描 4.滲透測試 用戶枚舉漏洞 漏洞描述 修復建議 點擊劫持漏洞 漏洞描述 修復建議 XSS漏洞 漏洞描述 修復建議 3.主機漏洞 超高危漏洞 高危漏洞 中危漏洞 低危漏洞 信息漏洞 參考信息…

用電商API接口獲取拼多多的商品詳情數據

pinduoduo.item_get_app_pro-根據ID取商品詳情原數據 公共參數 API請求地址 名稱類型必須描述keyString是調用key&#xff08;必須以GET方式拼接在URL中&#xff09;secretString是調用密鑰api_nameString是API接口名稱&#xff08;包括在請求地址中&#xff09;[item_searc…

一步一步寫線程之一簡單的開始

一、多線程 多線程不管是在前面的文章分析中還是在網上還是大書籍上&#xff0c;學習C/C多線程編程是無法繞過的&#xff0c;即使使用別人封裝好的框架&#xff0c;包括使用STL的一些庫&#xff0c;如果僅僅是簡單的應用&#xff0c;可能也就過去了。不過&#xff0c;稍微復雜…

VBA_MF系列技術資料1-237

MF系列VBA技術資料 為了讓廣大學員在VBA編程中有切實可行的思路及有效的提高自己的編程技巧&#xff0c;我參考大量的資料&#xff0c;并結合自己的經驗總結了這份MF系列VBA技術綜合資料&#xff0c;而且開放源碼&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-04屬于定…