django之數據的翻頁和搜索功能

數據的翻頁和搜素功能

目錄

1.實現搜素功能

2.實現翻頁功能

一、實現搜素功能

我們到bootstrap官網, 點擊組件, 然后找到輸入框組, 并點擊作為額外元素的按鈕。

在這里插入圖片描述

我們需要使用上面紅色框里面的組件, 就是搜素組件, 代碼部分就是下面紅色框框出來的部分。

把這里的代碼復制到assets_list.html里面:

{% extends "index/model_tmp.html" %}{% block content %}<div class="container"><a href="/assets/add/" class="btn btn-success">添加信息</a>{# 實現搜素查詢, 將查詢的框和按鈕都放在右邊 #}<div style="float: right">{# 這里面搜素信息, 需要用到get請求方法, 所以還是要用到form, method是get, 之后使用搜素功能會在網址里面多一個參數, 叫做search, 網址格式變為http://ip:port/路徑?search=搜素的內容 #}<form method="get">{# 這里面就是網上復制粘貼的代碼 #}<div class="input-group" style="float: right;width: 300px;"><input type="text" class="form-control" name="search" placeholder="Search for..."><span class="input-group-btn"><button class="btn btn-default" type="submit">搜索</button></span></div></form></div><div class="panel panel-danger"><div class="panel-heading"><h3 class="panel-title">資產表</h3></div><div class="panel-body"><table class="table table-hover"><thead><tr><th>ID</th><th>手機號</th><th>狀態</th><th>創建時間</th><th>使用者</th><th>價格</th></tr></thead><tbody>{% for data in assets_list %}<tr><th scope="row">{{ data.id }}</th><td>{{ data.mobile }}</td>{% if data.status == 1 %}<td style="color: green">{{ data.get_status_display }}</td>{% else %}<td style="color: red">{{ data.get_status_display }}</td>{% endif %}<td>{{ data.create_time|date:"Y-m-d" }}</td><td>{{ data.user.name }}</td><td>{{ data.price }}</td><td style="color: green"><a href="/assets/{{ data.id }}/modify"><span style="color: green;"class="glyphicon glyphicon-pencil"aria-hidden="true"></span></a><a href="/assets/{{ data.id }}/del/"><span style="color: red;"class="glyphicon glyphicon-trash"aria-hidden="true"></span></a></td></tr>{% endfor %}</tbody></table></div></div></div>
{% endblock %}

后端代碼assets.py:

from django.core.exceptions import ValidationError
from django.core.validators import RegexValidator
from django.shortcuts import render, redirect
from django.utils.safestring import mark_safe
from django import formsfrom project_one import models# Create your views here.
def assets(request):# 搜索信息dict_data = {}# 獲取搜素框里的內容, 就是獲取網址里面的search參數的值value = request.GET.get('search')if value:# 在表格中搜素包含輸入框當中的數據, 這里搜素的是手機號, key為mobile__containsdict_data["mobile__contains"] = value# 通過搜素框里面的內容, 在表格里查找手機號, 將查找的結果展示出來assets_list = models.Assets.objects.filter(**dict_data)return render(request, "assets/assets_list.html", {"assets_list": assets_list})

這里的assets函數, 還是上次寫好的函數, 路由也是上次配置好的, 我們這篇文章只需要修改這個函數里面的內容即可。

運行結果:

在這里插入圖片描述

這里面有很多數據, 我們使用搜素功能看看有什么結果。

假如我們搜素158:

在這里插入圖片描述

頁碼會展示帶有158的電話號碼(這個搜素, 可以搜素匹配手機號的任意位置, 但是搜所的內容, 和匹配的電話里面的數字必須連續匹配的上, 比如搜素框里面是33589, 但是實際有個電話號碼有部分包含33580, 這種情況就匹配不出來)。

還有當我們在搜索框沒有任何內容的時候, 再點擊搜索按鈕, 就會把所有數據都展示出來。

這個就是搜素功能。整體代碼相對簡單, 不過需要注意的是: value = request.GET.get(‘search’)這行代碼, 是用戶獲取在url里面的search參數的值, 比如象上面我搜索的158, 在url里面后面跟著?search=158, 所以這里的value, 獲取的就是158。if value: // 在表格中搜素包含輸入框當中的數據, 這里搜素的是手機號, key為mobile__contains dict_data["mobile__contains"] = value這里的代碼意思是如果獲取到了搜索框里面的內容, 那就添加字典里面, 并且

key為mobile__contains, 這個 mobile__contains千萬不能寫錯, 下劃線_是兩個, 不能漏寫也不能多寫, 這個是按照手機號來查詢數據。然后 再用assets_list = models.Assets.objects.filter(**dict_data)這行代碼, 將我想要查詢的數據查詢出來, 注意在filter里面要用**dict_data, 因為dict_data是個字典。

二、實現翻頁功能

我們在bootstrap里面找到分頁的代碼:

在這里插入圖片描述

將它復制黏貼到代碼里面:

assets.html:

{% extends "index/model_tmp.html" %}{% block content %}<div class="container"><a href="/assets/add/" class="btn btn-success">添加信息</a>{# 實現搜素查詢 #}<div style="float: right"><form method="get"><div class="input-group" style="float: right;width: 300px;"><input type="text" class="form-control" name="search" placeholder="Search for..."><span class="input-group-btn"><button class="btn btn-default" type="submit">搜索</button></span></div></form></div><div class="panel panel-danger"><div class="panel-heading"><h3 class="panel-title">資產表</h3></div><div class="panel-body"><table class="table table-hover"><thead><tr><th>ID</th><th>手機號</th><th>狀態</th><th>創建時間</th><th>使用者</th><th>價格</th></tr></thead><tbody>{% for data in assets_list %}<tr><th scope="row">{{ data.id }}</th><td>{{ data.mobile }}</td>{% if data.status == 1 %}<td style="color: green">{{ data.get_status_display }}</td>{% else %}<td style="color: red">{{ data.get_status_display }}</td>{% endif %}<td>{{ data.create_time|date:"Y-m-d" }}</td><td>{{ data.user.name }}</td><td>{{ data.price }}</td><td style="color: green"><a href="/assets/{{ data.id }}/modify"><span style="color: green;"class="glyphicon glyphicon-pencil"aria-hidden="true"></span></a><a href="/assets/{{ data.id }}/del/"><span style="color: red;"class="glyphicon glyphicon-trash"aria-hidden="true"></span></a></td></tr>{% endfor %}</tbody></table></div></div>{# 實現分頁查詢 #}<ul class="pagination"><li><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li><li><a href="?page=1">1</a></li><li><a href="?page=2">2</a></li><li><a href="?page=3">3</a></li><li><a href="?page=4">4</a></li><li><a href="?page=5">5</a></li><li><a href="#" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li></ul></div>
{% endblock %}

后端assets.py:

from django.core.exceptions import ValidationError
from django.core.validators import RegexValidator
from django.shortcuts import render, redirect
from django.utils.safestring import mark_safe
from django import formsfrom project_one import models# Create your views here.
def assets(request):# assets_list = models.Assets.objects.all()# 搜索信息dict_data = {}# 獲取搜素框里的內容, 就是獲取網址里面的search參數的值value = request.GET.get('search')if value:# 在表格中搜素包含輸入框當中的數據, 這里搜素的是手機號, key為mobile__containsdict_data["mobile__contains"] = value# assets_list = models.Assets.objects.filter(**dict_data)# 獲取分頁組件里面選中的頁碼, 也是獲取網址里面的page參數的值page = int(request.GET.get('page', 1))# 每一頁查詢10條數據page_size = 10# 當前頁開始的數據start = (page - 1) * page_size# 當前頁結尾的數據end = page_size * page# 利用切片, 實現分頁查詢, 查詢出當頁數據assets_list = models.Assets.objects.filter(**dict_data)[start:end]return render(request, "assets/assets_list.html", {"assets_list": assets_list})

運行結果:

我們會發現, 當我們點擊第一頁的時候, 就給我們展示第一頁的數據

在這里插入圖片描述

點擊第幾頁, 就給我們展示第幾頁的數據。

但是光這五頁數據, 肯定是不夠的。當我們數據量大的時候, 需要幾十頁甚至于上百頁上千頁數據。

不過這又出現了一個問題, 如果有上百頁上千頁數據的話, 難道我們需要在分頁組件里寫上百條上千條li和a嗎?這樣顯然不可行, 所以我們可以統一寫五個帶有頁碼的按鈕, 但是這五個按鈕, 頁碼會變化。

假如我們有20頁數據要展示:

當我們點擊1到3頁的時候, 這五個按鈕依然顯示1, 2, 3, 4, 5, 但是當我們點擊4的時候, 這五個按鈕就要顯示2, 3, 4, 5, 6了, 后面以此類推, 當我們點擊18, 19或者20的時候, 這五個按鈕顯示16, 17, 18, 19, 20。我們可以發現一個規律, 就是我們選中的頁數, 除了1, 2, 3, 18, 19, 20以外, 其他所有我們選中的頁碼, 離最左邊和最右邊的頁碼始終相差2。而頁碼最前面只有點擊到4的時候, 五個按鈕里面的頁碼才會開始發生變化, 頁碼最后面只有到18開始, 頁碼才不會變化。

我們可以設plus=2, 這個2指的是我們選中的頁碼, 離最左邊和最右邊的頁碼始終相差2。開始頁用start_page, 結束頁用end_page。

代碼:

assets.py部分代碼:

# 統計表當中的總個數data_asset_count = models.Assets.objects.filter(**dict_data).count()# 求得表中的總個數都需要多少頁來展示, page_num代表總頁數, div代表剩余的數據還有多少條page_count, div = divmod(data_asset_count, page_size)if div:page_count += 1# 我們需要在分頁組件里面展示五個頁碼。# 當我們選中的頁數, 和最左邊最右邊顯示的頁數相差2, 所以我們將plus設置為2, 比如我選擇第三頁, 那最左邊顯示的頁碼是1最右邊顯示的頁碼是5。plus = 2# 我們想要分頁功能, 展示其中5個頁碼, 如果想要展示不同個頁數的頁碼, 自己可以調整。# 當總頁數不超過5頁的時候, 1 + 2 * plus意思是當前選擇的頁, 加上左邊還有兩頁, 右邊也還有兩頁, 總共是5頁。if data_asset_count <= 1 + 2 * plus:# 開始頁數為1start_page = 1# 結束位置就是總頁數end_page = data_asset_count# 這里面全是總頁數大于5頁的情況else:# 如果我目前選擇的頁碼, 小于等于3if page <= plus + 1:# 開始頁還是1start_page = 1# 結束頁是5, 1 + 2 * plus這個意思上面有注釋。end_page = 1 + 2 * plus# 如果我目前選擇的頁碼加上2能夠大于總頁數, 那就說明分頁組件里面的頁碼是最后五頁數據了, 比如總頁數為20, 我選擇的是第19頁, 19+2=21>20elif page + plus > page_count: # 這里寫>=也可以# 開始頁為總頁數減去兩倍的plus, 比如總共有20頁, 當我們分頁組件顯示的頁碼是最后五頁的時候, 最左邊應該顯示的是16。所以正好是總頁數-兩倍的plusstart_page = page_count - 2 * plus# 結尾頁展示的就是總頁數end_page = page_count# 如果我們目前選擇的頁碼就在正中間, 排除1, 2, 3, 19, 20頁的其它所有頁數。else:# 開始頁數就是當前分頁組件選擇的頁數-plusstart_page = page - plus# 結束頁數就是當前分頁組件選擇的頁數+plusend_page = page + plus

然后我們需要實現動態添加html代碼:

 # 創建一個列表, 用于存儲html代碼, 以字符串來保存到列表中html_list = []# 分頁組件返回到首頁功能html_list.append(f"""<li><a href="?page=1">首頁</a></li>""")# 如果當前選擇的頁碼>1, 可以往前退一頁, 否則不能在往前退了。在li標簽上加class="disabled"代表禁用if page > 1:html_list.append(f"""<li><a href="?page={page - 1}"><span aria-hidden="true">?</span></a></li>""")else:html_list.append("""<li class="disabled"><spanaria-hidden="true">?</span></li>""")# 分頁組件的中間翻頁的內容, 點擊第幾頁就到第幾頁, 在分頁組件當中, 選中的頁碼會有背景色。li標簽里面的class='active'代表選中了那個頁碼, 會出現背景色for page_num in range(start_page, end_page + 1):if page_num == page:html_list.append(f"<li class='active'><a href='?page={page_num}'>{page_num}</a></li>")else:html_list.append(f"<li><a href='?page={page_num}'>{page_num}</a></li>")# 如果當前選擇的頁碼<總頁數, 可以往前進一頁, 否則不能在往進退了。在li標簽上加class="disabled"代表禁用if page < page_count:html_list.append(f"""<li><a href="?page={page + 1}"><span aria-hidden="true">?</span></a></li>""")else:html_list.append("""<li class="disabled"><spanaria-hidden="true">?</span></li>""")# 分頁組件進入到尾頁功能html_list.append(f"""<li><a href="?page={page_count}">尾頁</a></li>""")# join就是將列表當中所有的內容全部拼接在一起為字符串。mark_safe函數的作用是將字符串里面的內容, 轉換為html元素。# mark_safe也是django框架里面的函數, 需要手動導入, 導入語句為from django.utils.safestring import mark_safepage_string = mark_safe("".join(html_list))

最后不要忘記return了。

# 不能忘記將page_string傳給前端。
return render(request, "assets/assets_list.html", {"assets_list": assets_list})

完整代碼:

from django.core.exceptions import ValidationError
from django.core.validators import RegexValidator
from django.shortcuts import render, redirect
from django.utils.safestring import mark_safe
from django import formsfrom project_one import models# Create your views here.
def assets(request):# assets_list = models.Assets.objects.all()# 搜索信息dict_data = {}# 獲取搜素框里的內容, 就是獲取網址里面的search參數的值value = request.GET.get('search')if value:# 在表格中搜素包含輸入框當中的數據, 這里搜素的是手機號, key為mobile__containsdict_data["mobile__contains"] = value# assets_list = models.Assets.objects.filter(**dict_data)# 獲取分頁組件里面選中的頁碼, 也是獲取網址里面的page參數的值page = int(request.GET.get('page', 1))# 每一頁查詢10條數據page_size = 10# 當前頁開始的數據start = (page - 1) * page_size# 當前頁結尾的數據end = page_size * page# 利用切片, 實現分頁查詢, 查詢出當頁數據assets_list = models.Assets.objects.filter(**dict_data)[start:end]# 統計表當中的總個數data_asset_count = models.Assets.objects.filter(**dict_data).count()# 求得表中的總個數都需要多少頁來展示, page_num代表總頁數, div代表剩余的數據還有多少條page_count, div = divmod(data_asset_count, page_size)if div:page_count += 1# 我們需要在分頁組件里面展示五個頁碼。# 當我們選中的頁數, 和最左邊最右邊顯示的頁數相差2, 所以我們將plus設置為2, 比如我選擇第三頁, 那最左邊顯示的頁碼是1最右邊顯示的頁碼是5。plus = 2# 我們想要分頁功能, 展示其中5個頁碼, 如果想要展示不同個頁數的頁碼, 自己可以調整。# 當總頁數不超過5頁的時候, 1 + 2 * plus意思是當前選擇的頁, 加上左邊還有兩頁, 右邊也還有兩頁, 總共是5頁。if data_asset_count <= 1 + 2 * plus:# 開始頁數為1start_page = 1# 結束位置就是總頁數end_page = data_asset_count# 這里面全是總頁數大于5頁的情況else:# 如果我目前選擇的頁碼, 小于等于3if page <= plus + 1:# 開始頁還是1start_page = 1# 結束頁是5, 1 + 2 * plus這個意思上面有注釋。end_page = 1 + 2 * plus# 如果我目前選擇的頁碼加上2能夠大于總頁數, 那就說明分頁組件里面的頁碼是最后五頁數據了, 比如總頁數為20, 我選擇的是第19頁, 19+2=21>20elif page + plus > page_count: # 這里寫>=也可以# 開始頁為總頁數減去兩倍的plus, 比如總共有20頁, 當我們分頁組件顯示的頁碼是最后五頁的時候, 最左邊應該顯示的是16。所以正好是總頁數-兩倍的plusstart_page = page_count - 2 * plus# 結尾頁展示的就是總頁數end_page = page_count# 如果我們目前選擇的頁碼就在正中間, 排除1, 2, 3, 19, 20頁的其它所有頁數。else:# 開始頁數就是當前分頁組件選擇的頁數-plusstart_page = page - plus# 結束頁數就是當前分頁組件選擇的頁數+plusend_page = page + plus# 創建一個列表, 用于存儲html代碼, 以字符串來保存到列表中html_list = []# 分頁組件返回到首頁功能html_list.append(f"""<li><a href="?page=1">首頁</a></li>""")# 如果當前選擇的頁碼>1, 可以往前退一頁, 否則不能在往前退了。在li標簽上加class="disabled"代表禁用if page > 1:html_list.append(f"""<li><a href="?page={page - 1}"><span aria-hidden="true">?</span></a></li>""")else:html_list.append("""<li class="disabled"><spanaria-hidden="true">?</span></li>""")# 分頁組件的中間翻頁的內容, 點擊第幾頁就到第幾頁, 在分頁組件當中, 選中的頁碼會有背景色。li標簽里面的class='active'代表選中了那個頁碼, 會出現背景色for page_num in range(start_page, end_page + 1):if page_num == page:html_list.append(f"<li class='active'><a href='?page={page_num}'>{page_num}</a></li>")else:html_list.append(f"<li><a href='?page={page_num}'>{page_num}</a></li>")# 如果當前選擇的頁碼<總頁數, 可以往前進一頁, 否則不能在往進退了。在li標簽上加class="disabled"代表禁用if page < page_count:html_list.append(f"""<li><a href="?page={page + 1}"><span aria-hidden="true">?</span></a></li>""")else:html_list.append("""<li class="disabled"><spanaria-hidden="true">?</span></li>""")# 分頁組件進入到尾頁功能html_list.append(f"""<li><a href="?page={page_count}">尾頁</a></li>""")# join就是將列表當中所有的內容全部拼接在一起為字符串。mark_safe函數的作用是將字符串里面的內容, 轉換為html元素。# mark_safe也是django框架里面的函數, 需要手動導入, 導入語句為from django.utils.safestring import mark_safepage_string = mark_safe("".join(html_list))# 不能忘記將page_string傳給前端。return render(request, "assets/assets_list.html", {"assets_list": assets_list, "page_string": page_string})

這里代碼比較長, 但每一行代碼都有注釋, 大家慢慢看, 慢慢學, 其實邏輯上不是很困難, 但是代碼量比較大, 處理的過程比較復雜。

運行結果:

默認是第一頁的數據

在這里插入圖片描述

然后我們點擊第三頁:

在這里插入圖片描述

點擊第四頁:

在這里插入圖片描述

往后翻頁, 直到點擊第13頁:

在這里插入圖片描述

往后翻頁, 直到點擊第18頁:

在這里插入圖片描述

第19頁:

在這里插入圖片描述

第20頁:

在這里插入圖片描述

點擊首頁:

在這里插入圖片描述

它幫我們跳轉到了第一頁。

點擊尾頁:

在這里插入圖片描述

它幫我們跳轉到了最后一頁。點擊左邊的<<按鈕:

在這里插入圖片描述

點擊一下, 頁數往回退一頁。

直到退到第一頁, 就不能在往回退數據了。

如圖:

在這里插入圖片描述

鼠標放到<<上面的時候, 有個紅色圈代表禁止使用那個按鈕。

>>也是一個道理, 也是每點擊一次網后面翻一頁, 直到翻到最后一頁, 鼠標放到>>上面的時候, 有個紅色圈代表禁止使用那個按鈕。同樣也不能繼續往后翻頁了。

好了, 這就是我們這篇文章的搜索和翻頁功能了!!!

以上就是Django數據的翻頁和搜索功能的所有內容了, 如果有哪里不懂的地方,可以把問題打在評論區, 歡迎大家在評論區交流!!!
如果我有寫錯的地方, 望大家指正, 也可以聯系我, 讓我們一起努力, 繼續不斷的進步.
學習是個漫長的過程, 需要我們不斷的去學習并掌握消化知識點, 有不懂或概念模糊不理解的情況下,一定要趕緊的解決問題, 否則問題只會越來越多, 漏洞也就越老越大.
人生路漫漫, 白鷺常相伴!!!

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

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

相關文章

Kotlin Multiplatform--02:項目結構進階

Kotlin Multiplatform--02&#xff1a;項目結構進階 引言正文 引言 在上一章中&#xff0c;我們對 Kotlin Multiplatform 項目有了基本的了解&#xff0c;已經可以進行開發了。但我們只是使用了系統默認的項目結構。本章介紹了如何進行更復雜的項目結構管理。 正文 在上一章中&…

【Git】連接github時的疑難雜癥(DNS解析失敗)

大家好&#xff0c;我是jstart千語。最近在將項目推送到github的時候&#xff0c;突然github就拒絕訪問了&#xff0c;即使掛了VPN&#xff0c;網頁也進不去&#xff0c;通過git也不能把代碼推送上去。 即使后面看別人的一些解決方案&#xff0c;比如取消代理啊、更換ssh的方式…

ViTMAE:掩碼自編碼器是可擴展的視覺學習者

摘要 本文展示了掩碼自編碼器&#xff08;MAE&#xff09;作為計算機視覺中的可擴展自監督學習方法。我們的MAE方法很簡單&#xff1a;我們對輸入圖像進行隨機掩碼&#xff0c;并重建缺失的像素。該方法基于兩個核心設計。首先&#xff0c;我們開發了一種非對稱的編碼器-解碼器…

全球碳化硅晶片市場深度解析:技術迭代、產業重構與未來賽道爭奪戰(2025-2031)

一、行業全景&#xff1a;從“材料突破”到“能源革命”的核心引擎 碳化硅&#xff08;SiC&#xff09;作為第三代半導體材料的代表&#xff0c;憑借其寬禁帶&#xff08;3.26eV&#xff09;、高臨界擊穿場強&#xff08;3MV/cm&#xff09;、高熱導率&#xff08;4.9W/cmK&…

AWS Glue ETL設計與調度最佳實踐

一、引言 在AWS Glue中設計和調度ETL過程時&#xff0c;需結合其無服務器架構和托管服務特性&#xff0c;采用系統化方法和最佳實踐&#xff0c;以提高效率、可靠性和可維護性。本文將從調度策略和設計方法兩大維度詳細論述&#xff0c;并輔以實際案例說明。 二、調度策略的最…

數據結構手撕--【二叉樹】

目錄 定義結構體&#xff1a; 初始化&#xff1a; 手動創建一個二叉樹&#xff1a; 前序遍歷&#xff1a; 中序遍歷&#xff1a; 后序遍歷 二叉樹節點個數&#xff1a; 葉子節點個數&#xff1a; 二叉樹第k層節點個數&#xff1a; 二叉樹的高度&#xff1a; 查找值為x…

2025 Java 開發避坑指南:如何避免踩依賴管理的坑?

在 Java 開發的世界里&#xff0c;依賴管理就像是一座看不見的橋梁&#xff0c;連接著項目所需的各種第三方庫和框架。然而&#xff0c;這座橋梁并非總是穩固&#xff0c;稍有不慎就可能掉入 “依賴地獄”&#xff0c;導致項目編譯失敗、運行異常。2025 年&#xff0c;隨著開源…

用node打開一個網頁

前言 使用node打開網頁&#xff0c;要求跨平臺 方案 使用子進程來用命令行打開網頁鏈接就可以了&#xff0c;需要注意的是Mac系統使用的是open命令&#xff0c;Windows系統使用的是start命令&#xff0c;Linux等系統使用xdg-open命令。針對不同的操作系統使用不同的命令。 封…

使用功能包組織C++節點的具體教程

在 ROS&#xff08;Robot Operating System&#xff09;中&#xff0c;使用功能包&#xff08;package&#xff09;來組織 C 節點是一種常見且有效的方式&#xff0c;它能讓代碼結構更清晰、便于管理和復用。 1. 環境準備 確保已經安裝了 ROS&#xff0c;這里以 ROS 2 Humble…

二項式分布html實驗

二項式分布html實驗 本文將帶你一步步搭建一個純前端的二項分布 Monte-Carlo 模擬器。 只要一個 HTML 文件&#xff0c;打開就能運行&#xff1a; 動態輸入試驗次數 n、成功概率 p 與重復次數 m點擊按鈕立刻得到「模擬頻數 vs 理論頻數」柱狀圖隨著 m 增大&#xff0c;兩組柱狀…

通過 API 對接應用網絡商城實現訂單自動化

前言 API&#xff08;Application Programming Interface&#xff09;即應用程序編程接口&#xff0c;是一種允許不同軟件應用程序之間進行交互和數據共享的工具。它通過定義一組明確的規則和協議&#xff0c;使得各個軟件系統能夠以標準化的方式相互通信。 在支付領域&#x…

openwrt作旁路由時的幾個常見問題 openwrt作為旁路由配置zerotier 圖文講解

1 先看openwrt時間&#xff0c;一定要保證時間和瀏覽器和服務器是一致的&#xff0c;不然無法更新 2 openwrt設置旁路由前先測試下&#xff0c;路由器能否ping通主路由&#xff0c;是否能夠連接外網&#xff0c;好多旁路由設置完了&#xff0c;發現還不能遠程好多就是旁路由本…

FANUC機器人GI與GO位置數據傳輸設置

FANUC機器人GI與GO位置數據傳輸設置&#xff08;整數小數分開發&#xff09; 一、概述 在 Fanuc 機器人應用中&#xff0c;如果 IO 點位足夠&#xff0c;可以利用機器人 IO 傳輸位置數據及偏移位置數據等。 二、操作步驟 1、確認通訊軟件安裝 首先確認機器人控制柜已經安裝…

UE5 Assimp 自用

記錄一下配assimp庫到ue中的過程。因為想在ue里面實現一些幾何處理(雖然ue好像有相關的geo的代碼&#xff09;&#xff0c;遂配置了一下assimp。 1. 編譯整理生成自己所需要的文件。cmake編譯&#xff0c;下載github 的官方的assimp-master&#xff0c;然后cmake都是默認的就行…

第18章:MCP在創作領域中的應用

第18章:MCP在創作領域中的應用 創意過程,無論是寫作、繪畫、音樂創作還是設計,往往充滿了不確定性、迭代和靈感的迸發。傳統 AI 在創意領域的應用常常局限于風格遷移、簡單內容生成等。MCP 框架通過其對記憶、上下文和規劃的整合,為 AI Agent 參與和輔助更深層次的創意活動…

電子電子架構 --- 主機廠視角下ECU開發流程

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 簡單,單純,喜歡獨處,獨來獨往,不易合同頻過著接地氣的生活,除了生存溫飽問題之外,沒有什么過多的欲望,表面看起來很高冷,內心熱情,如果你身…

【Agent】LangManus深度解析:AI自動化框架的對比與langgraph原理

LangManus深度解析&#xff1a;AI自動化框架的技術演進與實踐 本文將帶你深入探索LangManus這一AI自動化框架的核心技術與其基于langgraph的實現原理&#xff0c;并與OpenManus進行全面對比&#xff0c;助你掌握多智能體系統的前沿技術。 本文3萬字&#xff0c;沒有時間的話可以…

機器學習-08-推薦算法-案例

總結 本系列是機器學習課程的系列課程&#xff0c;主要介紹機器學習中關聯規則 參考 機器學習&#xff08;三&#xff09;&#xff1a;Apriori算法&#xff08;算法精講&#xff09; Apriori 算法 理論 重點 MovieLens:一個常用的電影推薦系統領域的數據集 23張圖&#x…

OpenCV 圖形API(63)圖像結構分析和形狀描述符------計算圖像中非零像素的邊界框函數boundingRect()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 計算點集或灰度圖像非零像素的 upright&#xff08;不旋轉&#xff09;邊界矩形。 該函數計算并返回指定點集或灰度圖像非零像素的最小 upright …

Redis ⑥-string | hash | list

string類型基本介紹 Redis 中的字符串&#xff0c;是直接按照二進制的方式進行存儲的。也就是說&#xff0c;在存取的過程中&#xff0c;是不會做任何編碼轉換的。存的是啥&#xff0c;取的時候就是啥。 Redis 的這個機制&#xff0c;就使得 Redis 非常適合用來存儲各種各樣的…