計算機基礎知識57

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

# 我們只研究post請求方式的編碼格式:

?????????? ?get請求方式沒有編碼格式--?index?useranme=&password=
?? ?????????get請求方式沒有請求體,參數直接在url地址的后面拼接著

#?有哪些方式可以提交post請求:form表單Ajaxapi工具

# 研究form表單的post請求:

????????? 默認的編碼格式:urlencoded
????????? 數據傳輸的形式:title=dasdas&price=2312&date=&publish=2&authors=3

# 對于Django后端是如何接收數據的:
????????把提交過來的數據都封裝到了request.POST
# 提交文件數據:enctype:form-data
# 數據傳輸的形式:
? ? ? ? ? ?title=dasdas&price=2312&date=&publish=2&authors=3

????????--------------binary-----------------------------
? ? ? ? ? ? ? ? ? ? ? ?文件數據

# 對于Django后端接收數據的:
????????普通數據還是在request.POST中
????????文件數據呢還是在request.FILES中
能在POST和FILES中接收數據,是因為Django已封裝了,提交過來的數據并不是queryDICT

# ajax提交post請求:
????????默認情況下,Ajax提交的數據后端還是在request.POST中接收的
????????默認的編碼格式:urlencoded
????????需要修改contentType類型:json格式的

"""對于符合urlencoded格式的數據后端都是在request.POST中接收數據的"""

Ajax提交json格式的數據

views.py
def index(request):if request.method == 'POST':print(request.POST)    #<QueryDict: {}>print(request.body)    #b'{"a":1,"b":2}'json_bytes=request.body    # 接收瀏覽器發過來純原生的數據,二進制,需要自己做封裝# json_str=json_bytes.decode('utf-8')# print(json_str,type(json_str))   # {"a":1,"b":2} <class 'str'>import json# json_dict = json.loads(json_str)# print(json_dict,type(json_dict))    # {'a': 1, 'b': 2} <class 'dict'>json_dict = json.loads(json_bytes)print(json_dict,type(json_dict))      # {'a': 1, 'b': 2} <class 'dict'>return render(request,'index.html')
index.html
<body>
<button class="btn">提交</button>
<script>$(".btn").click(function () {$.ajax({url:'',type:'post',data:JSON.stringify({a:1,b:2}),   //序列化contentType:'application/json',   //json格式的success:function (res){}})})
</script>
</body>

前端提交到后端,后端json解碼

Ajax提交文件數據

index.html
<body>
<form action="">用戶名: <input type="text" id="username">上傳文件: <input type="file" id="myfile"><button class="btn">提交</button>
<script>$(".btn").click(function (ev) {console.log(123);// 要獲取到文件數據,{#console.log($("#myfile")[0].files[0]) // C:\fakepath\123.png#}// 提交文件數據需要借助于formdata對象var myFormDataObj = new FormData;var username = $("#username").val();var myfile = $("#myfile")[0].files[0];myFormDataObj.append('username', username);myFormDataObj.append('myfile',myfile);$.ajax({url: '',type: 'post',{#data: JSON.stringify({a: 1, b: 2}), // 序列化的     "{"a":1, "b":2}"#}data: myFormDataObj, // 序列化的     "{"a":1, "b":2}"{#contentType: 'application/json', // json格式的#}contentType:false, // 告訴瀏覽器不要給我的編碼格式做任何的處理processData: false, //success: function (res) {}})})
</script>
</body>

Ajax結合layer 彈出層組件

layer 彈出層組件 - jQuery 彈出層插件 (layuiweb.com)

批量插入數據

bulk_list = []
for i in range(10000):user_obj=models.UserInfo(username='kevin%s' %i)bulk_list.append(user_obj)
models.UserInfo.objects.bulk_create(bulk_list)

# 循環之后得到了一個列表,10000個對象
# 數據庫的優化, 同樣的功能,不同的sql執行的效率差距很大
# 優化查詢速度的時候,首先想到的是,加索引、優化sql語句,有的sql走做引、有的sql不走索引

分頁的原理及推導

當查詢的數據太多的時候,一頁展示不完,分頁碼展示

總數據?每頁展示總頁數
100?? ?10

10

1011011
991010

怎么計算出來總頁數:? ?總數據 ?/ ?每頁展示 ?= ?總頁數? ? ? ? ??divmod

????????有余數+1
????????沒有余數=商

分頁類

以后使用直接導入文件用就行,已經封裝好,需配置路由和鏈接數據庫使用

utils/my_page.py
class Pagination(object):def __init__(self, current_page, all_count, per_page_num=2, pager_count=11):"""封裝分頁相關數據:param current_page: 當前頁:param all_count:    數據庫中的數據總條數:param per_page_num: 每頁顯示的數據條數:param pager_count:  最多顯示的頁碼個數"""try:current_page = int(current_page)except Exception as e:current_page = 1if current_page < 1:current_page = 1self.current_page = current_pageself.all_count = all_countself.per_page_num = per_page_num# 總頁碼all_pager, tmp = divmod(all_count, per_page_num)if tmp:all_pager += 1self.all_pager = all_pagerself.pager_count = pager_countself.pager_count_half = int((pager_count - 1) / 2)@propertydef start(self):return (self.current_page - 1) * self.per_page_num@propertydef end(self):return self.current_page * self.per_page_num@propertydef page_html(self):# 如果總頁碼 < 11個:if self.all_pager <= self.pager_count:pager_start = 1pager_end = self.all_pager + 1# 總頁碼  > 11else:# 當前頁如果<=頁面上最多顯示11/2個頁碼if self.current_page <= self.pager_count_half:pager_start = 1pager_end = self.pager_count + 1# 當前頁大于5else:# 頁碼翻到最后if (self.current_page + self.pager_count_half) > self.all_pager:pager_end = self.all_pager + 1pager_start = self.all_pager - self.pager_count + 1else:pager_start = self.current_page - self.pager_count_halfpager_end = self.current_page + self.pager_count_half + 1page_html_list = []# 添加前面的nav和ul標簽page_html_list.append('''<nav aria-label='Page navigation>'<ul class='pagination'>''')first_page = '<li><a href="?page=%s">首頁</a></li>' % (1)page_html_list.append(first_page)if self.current_page <= 1:prev_page = '<li class="disabled"><a href="#">上一頁</a></li>'else:prev_page = '<li><a href="?page=%s">上一頁</a></li>' % (self.current_page - 1,)page_html_list.append(prev_page)for i in range(pager_start, pager_end):if i == self.current_page:temp = '<li class="active"><a href="?page=%s">%s</a></li>' % (i, i,)else:temp = '<li><a href="?page=%s">%s</a></li>' % (i, i,)page_html_list.append(temp)if self.current_page >= self.all_pager:next_page = '<li class="disabled"><a href="#">下一頁</a></li>'else:next_page = '<li><a href="?page=%s">下一頁</a></li>' % (self.current_page + 1,)page_html_list.append(next_page)last_page = '<li><a href="?page=%s">尾頁</a></li>' % (self.all_pager,)page_html_list.append(last_page)# 尾部添加標簽page_html_list.append('''</nav></ul>''')return ''.join(page_html_list)
ab_page.html
<body>
{% for foo in userlist %}<p>{{ foo.username }}</p>
{% endfor %}{{ html|safe }}
</body>
views.py
from django.shortcuts import render
from app01 import models
def ab_page(request):from utils.my_page import Paginationtry:current_page = int(request.GET.get('page'))except:current_page = 1user_queryset = models.UserInfo.objects.all()all_count = user_queryset.count()page_obj = Pagination(current_page, all_count, per_page_num=10)userlist = user_queryset[page_obj.start:page_obj.end]html = page_obj.page_htmlreturn render(request, 'ab_page.html', locals())"""
per_page_num=10
current_page                start_page      end_page
1                             0               10
2                             10               20
3                               20               30
start_page=(current_page - 1) * per_page_num
end_page=current_page*per_page_num
"""

今日思維導圖:

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

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

相關文章

構建個性化預約服務:預約上門服務系統源碼解讀與實戰

隨著社會的發展&#xff0c;預約上門服務系統在滿足用戶需求、提升服務效率方面發揮著越來越重要的作用。在本文中&#xff0c;我們將深入研究預約上門服務系統的源碼&#xff0c;通過實際的技術代碼示例&#xff0c;揭示系統內部的關鍵機制&#xff0c;以及如何在實際項目中應…

qml動畫過渡Transition

文章目錄 基本概念使用 `Transition`示例動畫過渡高級用法示例:復雜動畫過渡解釋進階用法在 QML 中,Transition 元素用于定義狀態之間過渡時的動畫。這是 QML 強大的狀態機制的一部分,允許開發者創建平滑且吸引人的用戶界面交互。使用 Transition,您可以定義當元素從一個狀…

深入了解接口測試:方法、工具和關鍵考慮因素(一)

接口測試是軟件測試中的一項重要工作&#xff0c;它涉及到系統與系統之間的交互點。接口可以是外部接口&#xff0c;也可以是內部接口&#xff0c;包括上層服務與下層服務接口以及同級接口。在接口測試中&#xff0c;我們需要確保接口能夠按照預期的方式進行通信和交互&#xf…

【攻防世界-misc】can_has_stdio?

1.用記事本打開文件是這樣子的&#xff0c; 這是一段BF&#xff08;Brainfuck&#xff09;編程語言代碼&#xff0c;屬于一種極簡化的編程語言&#xff0c;用于演示計算機程序設計概念。這段代碼包含了一些操作符&#xff0c;如">"表示指針向右移動&#xff0c;&q…

【C++破局】泛型編程|函數模板|類模板

?作者主頁 &#x1f4da;lovewold少個r博客主頁 ??本文重點&#xff1a;c模板初階知識點講解 &#x1f449;【C-C入門系列專欄】&#xff1a;博客文章專欄傳送門 &#x1f604;每日一言&#xff1a;花有重開日&#xff0c;人無再少年 目錄 前言 泛型編程 函數模板 函數模…

用Java實現簡易的圖書管理系統(超詳細)

目錄 1.設計背景 2.設計思路 3.模塊展示及代碼演示 3.1 Book類的實現 3.2 BookList類的實現(書架) 3.3 異常類的實現(OperationException) 3.4 用戶類的實現 3.5 操作接口的實現(定義規范) 3.6 操作類的具體實現 3.6.1 增加操作 3.6.2 查找操作 3.6.3 刪除操作 3.6…

標簽打印機打印標簽時出現,數據處理過程中錯誤 無法設置項目 圖片1的內容無法打印

環境&#xff1a; Win10專業版 NiceLabel Designer 10.1 問題描述&#xff1a; 標簽打印機打印標簽時出現&#xff0c;數據處理過程中錯誤 無法設置項目 圖片1的內容無法打印 解決方案&#xff1a; 1.刪除標簽部分文字打印測試 還是一樣&#xff08;未解決&#xff09; …

已解決java.lang.IllegalStateException異常的正確解決方法,親測有效!!!

已解決java.lang.IllegalStateException異常的正確解決方法&#xff0c;親測有效&#xff01;&#xff01;&#xff01;文章目錄 報錯問題解決思路解決方法交流 報錯問題 java.lang.IllegalStateException 解決思路 java.lang.IllegalStateException通常表示程序的當前狀態與…

jenkins 參數構建

應用保存 [rootjenkins-node1 .ssh]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved i…

【嵌入式面試】2022年嵌入式經典面試題匯總(C語言)

&#x1f4dc;作者&#xff1a;不想脫發的基兄 &#x1f4fa;專欄&#xff1a;《嵌入式面試》 &#x1f4e3;格言&#xff1a;不管前方的路有多苦&#xff0c;只要走的方向正確&#xff0c;不管多么崎嶇不平&#xff0c;都比站在原地更接近幸福。 前言&#xff1a; 2022年秋招我…

C++之初始化列表詳細剖析

一、初始化列表定義 初始化列表&#xff1a;以一個冒號開始&#xff0c;接著是一個以逗號分隔的數據成員列表&#xff0c;每個"成員變量"后面跟一個放在括號中的初始值或表達式。 class Date { public:Date(int year, int month, int day): _year(year), _month(mont…

OpenCV快速入門:圖像分析——圖像分割和圖像修復

文章目錄 前言一、圖像分割1.1 漫水填充法1.1.1 漫水填充法原理1.1.2 漫水填充法實現步驟1.1.3 代碼實現 1.2 分水嶺法1.2.1 分水嶺法原理1.2.2 分水嶺法實現步驟1.2.3 代碼實現 1.3 GrabCut法1.3.1 GrabCut法原理1.3.2 GrabCut法實現步驟1.3.3 代碼實現 1.4 Mean-Shift法1.4.1…

論文閱讀 (106):Decoupling maxlogit for out-of-distribution detection (2023 CVPR)

文章目錄 1 概述1.1 要點1.2 代碼1.3 引用 2 預備知識3 方法3.1 MaxLogit3.2 改進MaxCosine和MaxNorm3.3 DML 1 概述 1.1 要點 題目&#xff1a;解耦最大logit分布外檢測 (Decoupling maxlogit for out-of-distribution detection) 方法&#xff1a; 提出了一種心機基于log…

多級緩存快速上手

哈嘍~大家好&#xff0c;這篇來看看多級緩存。 &#x1f947;個人主頁&#xff1a;個人主頁????? &#x1f948; 系列專欄&#xff1a;【微服務】 &#x1f949;與這篇相關的文章&#xff1a; JAVA進程和線程JAVA進程和線程-CSDN博客Http…

不做機器視覺工程師,轉行,轉崗的建議與想法

正所謂外行看熱鬧&#xff0c;內行看門道。提前咨詢前輩們&#xff0c;多問問&#xff0c;多看看。要做就做&#xff0c;一定要提前做好防范。 無論你是要轉行或者是轉崗&#xff0c;看你有沒有本錢和試錯成本 有些人&#xff0c;家庭好&#xff0c;可以一直去試錯和從頭再來。…

無線WiFi安全滲透與攻防(國外篇):使用 Aircrack-ng 破解 WEP 密碼

使用 Aircrack-ng 破解 WEP 密碼 使用 Aircrack-ng 破解 WEP 密碼一. 用 Aircrack-ng 破解 WEP 密碼 - 背景知識網卡與網卡芯片WEP 加密協議WEP 所使用的身份認證協議二. 使用 Aircrack-ng 破解 WEP 密碼 - 破解原理破解機理三. 使用 Aircrack-ng 破解 WEP 密碼 - aircrack-ng …

學習.NET驗證模塊FluentValidation的基本用法(續1:其它常見用法)

FluentValidation模塊支持鏈式驗證方法調用&#xff0c;也就是說&#xff0c;除了 RuleFor(r > r.UserName).NotEmpty()調用方式之外&#xff0c;還可以將對單個屬性的多種驗證函數以鏈式調用方式串接起來&#xff0c;比如UserName屬性不能為空&#xff0c;長度在5~10之間&a…

__attribute__((constructor))用法解析

__attribute__((constructor))是GCC和兼容的編譯器中的一個特性&#xff0c;用于指示編譯器將一個函數標記為在程序啟動時自動執行的初始化函數。 同樣的還有__attribute__((destructor))在main()函數后調用。 當你在一個函數聲明或定義前加上__attribute__((constructor))屬…

淺談 Guava 中的 ImmutableMap.of 方法的坑

作者&#xff1a;明明如月學長&#xff0c; CSDN 博客專家&#xff0c;大廠高級 Java 工程師&#xff0c;《性能優化方法論》作者、《解鎖大廠思維&#xff1a;剖析《阿里巴巴Java開發手冊》》、《再學經典&#xff1a;《EffectiveJava》獨家解析》專欄作者。 熱門文章推薦&…

vue項目下.env.development環境變量配置文件

.env.development 文件是一個用于開發環境配置的文件。在許多應用程序中&#xff0c;開發環境和生產環境具有不同的配置需求。.env.development 文件允許你在開發環境中定義特定的環境變量和配置選項。 一般來說&#xff0c;.env.development 文件用于存儲開發環境相關的配置信…