❶ 干貨分享!python三大web框架簡單介紹
1、Django
Django是一個開放源代碼的Web應用框架,由Python寫成。採用了MTV的框架模式,即模型M,模板T和視圖V。它最初是被開發來用於管理勞倫斯出版集團旗下的一些以新聞內容為主的網站的,即是CMS(內容管理系統)軟體。
2、Flask
Flask是一個使用 Python 編寫的輕量級 Web 應用框架。其 WSGI 工具箱採用 Werkzeug ,模板引擎則使用 Jinja2 。Flask使用 BSD 授權。
Flask也被稱為 “microframework” ,因為它使用簡單的核心,用 extension 增加其他功能。Flask沒有默認使用的資料庫、窗體驗證工具。
Flask 很輕,花很少的成本就能夠開發一個簡單的網站。非常適合初學者學習。Flask 框架學會以後,可以考慮學習插件的使用。例如使用 WTForm + Flask-WTForm 來驗證表單數據,用 SQLAlchemy + Flask-SQLAlchemy 來對你的資料庫進行控制。
3、Tornado
Tornado是一種 Web 伺服器軟體的開源版本。Tornado 和現在的主流 Web 伺服器框架(包括大多數 Python 的框架)有著明顯的區別:它是非阻塞式伺服器,而且速度相當快。
得利於其 非阻塞的方式和對epoll的運用,Tornado 每秒可以處理數以千計的連接,因此 Tornado 是實時 Web 服務的一個 理想框架。
關於干貨分享!Python三大web框架簡單介紹,環球青藤小編就和大家分享到這里了,學習是永無止境的,學習一項技能更是受益終身,所以,只要肯努力學,什麼時候開始都不晚。如果您還想繼續了解關於python編程的學習方法及素材等內容,可以點擊本站其他文章學習。
❷ Python web開發需要什麼知識python工程師來答
既然是python web開發,那就要會一點前端知識,如HTML,這種超文本標記語言是網頁的核心;其次就是關於伺服器,伺服器端腳本語言。可以參考該文。上海Python培訓:Python web開發需要哪些知識
❸ 如何用Python做Web開發
1.python入門
推薦老齊《從零開始學python》,《python簡明教程》,這兩本書很適合小白入門(像我一樣長期徘徊在編程門外的人)
2.python進階
推薦《python學習手冊》,python學習手冊的前半部分與在入門教程中的基礎部分相重復,後面部分對python的介紹更細致,比如面向對象的這部分對於小白理解相對容易。
還有一本《python cookbook》,這本是在講述python的經典用法,目前讀過函數,裝飾器以及網路編程這三部分,在不斷的敲玩具代碼的過程中,會發現書中講的例子不斷會出現。
3.學習web開發,自然要涉及到基於python的web 框架。
1)flask
flask如同官方所描述的那樣,是一個web微框架,用幾行代碼就可以實現一個在hello world,現在的個人感覺是flask確實適合新手入門。基於這個原則,
推薦《flask web 開發》這本書,這本書簡直是良心,講的很細,並且在github上有源碼,可以很容易跟著作者的步驟去學習,不懂得的地方可以去問谷歌或者qq群。
推薦的第二本是《building web applications with flask》這本書是對flask框架的細化,深入講解flask的模板,restful等等,雖然是英文,但是葉能順利閱讀下去
推薦的第三本是《flask Framework cookbook》,這三本書是一個不段進階的部分。
2)django
django是大而全,開箱即用,在flask了解的差不多的時候去了解,畢竟生成環境用的django相對多一點。
django學習可以看得書:(1)tango with django只有一個應用去學習,對於新手友好,可以比對github源碼
(2)django by example 注重實戰,有幾個實例,blog, shop etc,涉及django基礎,redis,celery,solr,ajax,很全面,也是web開發常用的技術
4.在學習框架的過程中,會不斷體會到前端的知識也是要補回來,可以w3c school看一下。
5.資料庫,在python中內置了sqlite, sql命令有相同之處,路線是sqlite, mysql, mongodb,有個逐漸過度的過程。
6.了解http的具體工作流程,這點目前還是有點模糊
7.工具集:sublime(需要配置,主要用於python編程,神器誰用誰知道), vim, firebug, firefox, linux,github(代碼大寶庫,各種代碼)
8.學習的過程覺得幾點很重要
1)做好筆記,同樣的問題會遇到第二次,有個筆記容易復查
2)善用谷歌,善用qq與論壇,你現在遇到的問題,大多數前人都遇到過,stackflow是個好地方
3)迷茫的時候還是堅持看,因為畢竟是小白,不懂的太多,你總要把他弄懂
4)有時間了可以把演算法與數據結構補起來
❹ 關於python與php的web編程,python有沒有在這一方面(web)獨特的優點,它的框架能與php相比較嗎
php上手很容易。也強大。大量的開源代碼。維護也容易。
python在WEB方面起步比 php晚,不過python的框架更系統化,從最簡單的web.py模式到復雜的zope, django都有。 我最近一直在用最簡單的WEB方式,一個文件就搞定。比如bottle.py
php學習很快,大約1-2小時就學會了。python花時間長些,可能要幾天。
python的優點就是,對於懂python的人來說,建網站很容易。有一種強大的感覺。跨平台也好。甚至比php還要簡單。
通常c++程序>java程序員>c#程序員>python>php,這個大於號是指編程風格會好些。具體用哪個語言與水平無關。
❺ 用Python進行web開發需要學習什麼
HTML(超文本標記語言)是網頁的核心,學好HTML是成為Web開發人員的基本條件。HTML很容易學習的,但也很容易誤用,要學精還得費點功夫。
隨著HTML5的發展和普及,了解HTML5也將成為Web開發人員的必修課。
涉及到網頁外觀時,就需要學習CSS了,它可以幫你把網頁做得更美觀。
利用HTML和CSS模擬一些你所見過的網站的排版和布局(色彩,圖片,文字樣式等等)。
第二步:學習javascript,了解DOM
JavaScript是一種能讓你的網頁更加生動活潑的程序語言。學習JavaScript的基本語法,學會用javascript操作網頁中dom元素。
接著學習使用一些javascript庫,比如jquery是大部分WEB開發人員都喜歡用的,通過Jquery可以有效的提高JavaScript的開發效率。
第三步:了解Web伺服器
你不必在這上面花太多精力,但對IIS、Apache基本配置要掌握,這方面的知識學起來也相對容易,不會花多長時間。
學習一點Unix和Linux的基本知識,因為大部分Web伺服器都運行在Unix和Linux平台上。
第四步: 學好一門伺服器端腳本語言
伺服器端腳本編程(後台開發)也是Web開發人員的基本功之一,你只需挑選一個伺服器端腳本語言,然後學好它。
目前流行的伺服器腳本語言有:php、asp.net、jsp、ruby、python、等。
第五步:學習資料庫及SQL語法
要構建動態頁面通常會使用到資料庫,常用的資料庫有SQLServer、Oracle、MySQL 等,它們都會遵循標準的SQL原則。
通常asp.net 程序使用SqlServer資料庫,PHP、java使用Oracle、MySQL資料庫。
第六步:綜合實戰
選一個你喜歡的後台編程語言,結合之前學到的html,css,javascript 前端技術,實現一個簡單的留言本、論壇程序、進而實現一個簡單的CMS(內容管理系統)
第七步:學習使用Web框架
當你掌握了HTML,CSS,JavaScript和伺服器端腳本語言後,就應該找一個Web框架加快你的Web開發速度,使用框架可以節約你很多時間。
比如.net的MVC,JAVA 的SSH,php的cakephp、CodeIgniter、zend,ruby的ROR,python的dijango等等,其實裡面都有一些相通之處。
整個開發過程你還可能會學習到一些工具的使用:
Visio,Dreamweaver,Vistual Studio、elipse、(Vim, EditPlus, Notpad++)、sqlserver、phpmyadmin,各種瀏覽器以及FireBug的插件,IE下的WebDevelopmentHelper、IETester等。如果你足夠用心,你還發掘出很多不錯的資源,例如MSDN,W3cSchool,一些前輩的博客,一些技術論壇等等,這都是你未來前進道路上的財富。如還想深入研究,學學http協議,理解什麼是無狀態,不然你永遠做不好WEB開發,研究web程序服務端運行原理,還有tcp/ip,udp協議等。
從最簡單的HTML到Web框架,內容還是不少,要想精通這里的每一樣技術,都得下苦功夫才行。半年的時間,足夠你對web開發產生一個有效的認識,這個時候,再思考你進一步學習的方向
❻ Python精選5篇教學心得
Python是一種跨平台的計算機程序設計語言,是一種面向對象的動態類型語言,越來越多被用於獨立的,大型項目的開發,已被逐漸廣泛應用於系統管理任務的處理和Web編程。下面給大家帶來一些關於Python 學習心得 ,希望對大家有所幫助。
python學習心得1
最近這段時間我們學習了很多內容,增長了很多關於Python的知識,萬事萬物是相通的,正如學習新的知識就像吃飯一樣。
吃多了就會消化不良,反映到學習上也是一樣,不知各位最近的感覺怎樣,反正學記是需要一些時間好好消化,掌握到手中,為下一步的知識補齊缺口。
接下來,學記和大家一起回顧一下最近學習的內容,循序漸進,循序漸進。
分支結構
分支結構就像上圖一樣,是用來選擇道路的。
所用的關鍵字是
If elif else
這三個詞的意思分別是
如果 否則如果 其他的
分支語句的寫法需要將與關鍵字與關鍵字對齊
循環結構
循環結構應用於一些重復的進程
通常我們只接觸兩種循環
for-in循環 和 while循環
for-in循環適用於
確切的知道到底循環幾次
while循環適用於
不知道到底有幾次循環
此時要搭配bool 來進行
即 True 和 Flase
關鍵字
關鍵字的熟練運用對於今後的開發工作
有非常重要的作用,但這么多關鍵字我們不能去死記硬背
只有在一個一個代碼的驗證當中去熟悉去掌握
那樣是最可靠的
def 設置模組
len 計算字元串長度
capitalize 獲得字元串首字母大寫的拷貝
upper 獲得字元串變大寫後的拷貝
find 從字元串中查找子串所在位置
index 與find類似但找不到子串時會引發異常
startswith 檢查字元串是否以指定的字元串開頭
endswith 檢查字元串是否以指定的字元串結尾
center 將字元串以指定的寬度居中並在兩側填充指定的字元
rjust 將字元串以指定的寬度靠右放置左側 填充指定的字元
isdigit 檢查字元串是否由數字構成
isalpha 檢查字元串是否以字母構成
isalnum 檢查字元串是否以數字和字母構成
append 添加元素
remove 刪除元素
clear 清空元素
sorted 排序
大家可能會有些疑惑,學習這些東西真的有用嗎?這些隨處可見的基礎方面的知識真的有用嗎?
我可以非常肯定地告訴大家
有用的!
這些知識就像是建築工地隨處可見的磚石,不管這些磚石怎樣的不起眼,但是沒有一幢建築可以離開磚石,學習的過程是枯燥的,不過這也正符合非常現實的一條規律。
學如逆水行舟,不進則退!
也正是因為它枯燥苦悶,學習有難度,才保證了,我們學習了這些知識以後,可以靠它們為生,在這個知識時代闖出自己的一片天!
不要放棄,絕對不要放棄!
黎明之前是最黑暗的!
為了自己的未來好好堅守吧!
青年學記 陪伴著各位青年
python學習心得2
python是一門非常有潛力的高級語言,歷經多年的發展,其在編程上發揮著越來越大的作用。在這學期中,通過選修python課上的基礎知識學習,我對python也有了一定的認識。而且,在字元串上的處理,python相對於c語言也是給程序員極大的便利。而python不僅如此,它的庫也很多,正因為它強大的庫,讓編程變得不再艱難。但是,我認為python雖然在許多方 面相 對於c語言比較方便,但也有其相對於弱一點的方面,比如說for循環等方面。雖然一學期下來,我對python的學習也僅僅只是它的基礎方面,但python的強大,也是足足地吸引著我,希望自己能夠在不斷地學習中,將python學習的更加好。
python是一門非常有潛力的高級語言,歷經多年的發展,其在編程上發揮著越來越大的作用。在這學期中,通過選修python課上的基礎知識學習,我對python也有了一定的認識。
在學習python的第一節課上,其對我的最初的印象就是,相較於我學習過的c語言編程,它更加的簡潔。所有的變數都不需要像c語言編程那樣需要提前去定義,這樣給了編程者很大的自由空間與方便。如x=2,即可同時完成變數的定義與賦值。對於簡化程序的代碼,起到了許多的作用。而且,在字元串上的處理,python相對於c語言也是給程序員極大的便利。在c語言中,只能用字元類的數組對字元串進行相應的操作,步驟也是相對於比較繁瑣的,而在python中,當我們需要創建一個字元串的時候,只需要在創建字元串的時候用「s=」就可以了。而python不僅如此,它的庫也很多,正因為它強大的庫,讓編程變得不再艱難。我們只需要調用庫中的函數,而對於函數的具體實現,也沒有特殊的需求。
但是,我認為python雖然在許多方面相對於c語言比較方便,但也有其相對於弱一點的方面,比如說for循環等方面。不過也依然不會影響到python的強大,而隨著近幾年來的發展,python的受歡迎度也越來越高,而它的運用的領域也是越來越多,比如人工智慧和大數據等領域,python都是在其中扮演者重要的角色。雖然一學期下來,我對python的學習也僅僅只是它的基礎方面,但python的強大,也是足足地吸引著我,希望自己能夠在不斷地學習中,將python學習的更加好。
python學習心得3
由於我是自學Python,非科班出生,所以只能分享一些關於我的學習心得,如果有不對地方歡迎指正。
不過非科班出生雖然是一個痛點,但是在工作上,我其實不輸給我其他同事,這點我倒是很有自信,而且我也統一一句話「目前互聯網上的免費編程課程,足夠讓你成為一個合格的碼農」。
編程入門
我剛開始學習編程,主要是因為自己想動手做個網站,但是由於技術原因,再加上朋友都比較忙,最後抱著「求人不如求己」的想法,乾脆自學。
編程難不難?
這個問題我覺得所有認真學過的人,都一定會肯定告訴你編程不難,但是精通那是相當困難的。
如果你還沒去學習,就覺得編程一定很難,那麼其實你是沒有資格說這句話的,任何事情一定是要去嘗試後,才能這么說。
編程其實很像堆積木,然後根據需求,把東西造出來,可以是房子,也可以是橋梁。
學習編程無非運用這些積木,來創造你要的東西。
編程語言選擇
這邊說個題外話,關於當時編程語言的選擇,很多時候我覺得不是你選擇編程語言,而是編程語言選擇你,也就是你的「本命編程語言」。
人的性格會影響你適合的編程語言,比如你做事有條理,喜歡定期清理房間,那麼可能C語言很適合你;如果你不喜歡打掃房間,實在受不了,才打掃一次,可能你適合Java。
哈哈,開個玩笑,不過確實有這種很玄的存在。
我當時在編程語言的選擇上,用了一個笨 方法 。
我跑到w3cschool上面,把所有編程語言的第一章都去試了一遍,看看自己喜歡哪個語言,然後就選哪個語言,如果你不知道選哪門語言,可以用我的方法試試看。
至於編程語言,沒有高低之分,因為無論你學習哪門語言,你都非常有市場,而且你都能夠拿到高薪,關鍵是哪門語言適合你,並且能夠讓你有興趣學下去,能學好,這個很關鍵。
興趣是學習編程最大的驅動力!
為什麼是Python
說下為什麼選擇Python?
因為簡單,Python是公認的最容易入門的編程語言,而且也是公認有發展前景的編程語言,適用於機器人、大數據、人工智商等未來高科技。
基於以上的原因,我選擇Python來作為自己的入門語言,而且我覺得我適合Python這么語言。(因為我很懶)
之前有個梗,大概就是其他編程語言在討論某個問題,怎麼解決,而Python的程序員已經下班了,由此可見Python的效率。
總結 :Python的語言特點就是「一氣呵成,痛快如拉稀」。
學習心得
由於我是自學的,所以參考的網站比較多,小夥伴可以按照我的學習路線,一般來說不會出現什麼問題。
基礎:教程+視頻
進階:視頻+實踐
進階pro:視頻+實踐+書籍+交流
基礎
剛開始學習的時候,我比較推薦w3cschool和菜鳥教程這兩個網站。
w3cschool-學編程,從w3cschool開始www.w3cschool.cn!
菜鳥教程 - 學的不僅是技術,更是夢想!www.runoob.com
這兩個網站在我看來,是編程自學的福音。
w3cschool這個網站手冊非常棒,另外這個網站的編程微課以及編程實戰對新手來說非常友好!
我當時就是靠這兩個,引發我學習的樂趣,不然對著枯燥的代碼,說實話,很無聊的。
菜鳥教程,這個網站的實例是最棒的,很多時候,你不僅僅要自己看教程,還要去看看為什麼,而菜鳥教程的實例就能夠讓你清晰的知道,為什麼,並且會原來如此。
總的來說,這兩個網站就像新手村剛出來的劍和盾!是新手入門絕對不能少的,尤其是w3cschool,強烈推薦。
還有一個就是視頻,視頻我是在慕課網上面看的,我很喜歡慕課網這個網站,網站風格很棒,而且視頻也很清晰。
也可以在阿里雲上面看Python的視頻,也很不錯,並且是免費的。
進階
進階結束後,代表你是個初級工程師。
這一步實踐非常重要,你要自己動手,做一些小玩意,實踐才是最重要的,在實踐中發現問題,那是學習最快並且效率最高的時刻。
你可以先給自己定下一個目標,比如我要做一個簡單的頁面,或者我要做一個簡單的小程序。
然後就開始動手去實踐,這步很重要。
同時還是要多看書籍。
進階pro
到這一步,我建議務必買書,你需要書籍幫你反向梳理你的知識,這決定了你以後的高度,而不是這個也懂,那個也懂,但是東西就是做不出來。
我記得當時我買完書,看完後的第一感受就是:原來這個世界是這樣的!
書會非常系統性的幫你梳理你自己學過的知識!
這里只推薦兩本書:《Python入門手冊》和《Python核心編程》
小夥伴可以自己去亞馬遜購買。
然後就是和身邊的小夥伴交流!
多看看別人的代碼,自己多敲敲代碼,是必經之路,也是一定要做的。
以上,希望對想入門Python的小夥伴能夠提供一點點幫助。
python學習心得4
017年11月,一群編程零基礎的小夥伴們成立了Python學習小組,12名學員從此夜以繼日地奔赴學習的征程。一個月過去了,從在屏幕上用最簡單的語句列印出「Hello, Python; Hello, World」開始,我們逐步地學習Python語法,學習操作列表、字典,學習For,While,If語句,現在遇到了第一個難點:類。通過研讀、練習、交流、討論,作為程序界的小白,我們逐步地理解了類的概念,明白了面向對象與面向過程編程的差異,以下是我們的小小心得,與大家分享:
編程基本思想
現實世界中,每個復雜的事務都可以拆分為多個組成部分,其中的每一部分就可稱之為對象。比如要實現一個很大很復雜的項目,我們可以把項目拆分成不同的組成部分,然後分別對不同部分通過編程實現,最終再把各個部分組裝起來完成整個項目。這讓我們能夠從整體上來控制項目,從而讓程序開發更有效。
比如汽車製造,汽車廠所做的僅僅是各個部件的組裝和匹配,而各個部件的生產是由相對專業的廠商完成。如果需要研發新型號汽車,整車廠所考慮的是如何對各個新式的零部件進行新的組裝和匹配,而不是從頭到尾重新生產一輛汽車。
面向對象的編程
VS
面向過程的編程
面向過程編程是針對一個需求的具體實現過程,但是對於大型項目的復雜需求,一步一步的做,這種編程效率顯然是低下的。
面向對象編程則是對項目進行拆分後(一般按照功能拆分),分別實現,再將各個對象組裝起來。因此簡單的小程序使用面向過程方法編程更適合。面向對象的編程特性是易維護(可讀性高),效率高,質量高(重用性),擴展性好(高內聚,低耦合)。
對象
通俗的講,對象就是事物,一個公司、一個部門、一個人,甚至一本書都可以是一個對象,程序員可以自由決定把什麼作為對象。
比如eHR系統,需要對組織架構,員工進行管理,所以使用的對象可能是公司,部門,崗位,員工,等等。對象可大可小,可復雜也可簡單,如果僅僅是做一個考勤系統,員工這個對象一定要比eHR系統中的員工對象簡單。
類
現實世界中,類代表一組有共同特性的事物,把不同對象之間的共性抽象出來,就形成類的概念。比如說男人、女人可以抽象成人這個類;處長、秘書可以抽象成員工類。至於類如何去抽象,粒度的粗細,這是一個需要在學習和實踐中摸索的過程。
實例
以下是一個實例,大家體會一下:
1. 定義父類:
class Employee:
def __init__(self, name, age): #抽象員工共性(名字,年齡)
self.name = name
self.age = age
def signON(self):
print(self.name+" sign on.") #抽象簽到的動作
def work(self):
print(self.name + " on work.") #抽象工作的動作
2. 繼承出子類:
class MEmployee(Employee): #繼承父類的共性
def __init__(self, name, age):
super().__init__(name, age)
def work(self): #重寫子類的方法(抽象出從事管理崗位工作的動作)
print(self.name + " on manager_work.")
3. 繼承出第二個子類:
class TEmployee(Employee):
def __init__(self, name, age, devLanguage): #繼承父類的共性,增加語言的屬性
super().__init__(name, age)
self.devLanguage = devLanguage
def work(self): #重寫子類的方法(抽象出從事技術崗位工作的動作)
print(self.name + " on technology_work.")
def showLanguage(self): #增加子類的方法(抽象出會某種編程語言的動作)
print("use "+self.devLanguage+" language.")
在上面的程序中,我們先定義了一個父類:包含員工的姓名、年齡等一般特性,可以執行簽到、工作這兩類動作。在第一個子類中,管理層在前面一般特性的基礎上,執行管理工作;在第二個子類中,作為一般員工在前面一般特性的基礎上,執行技術工作,從事編程。
python學習心得5
1、定義方法
關鍵字 def 是方法定義的標志。接下來緊跟方法名和被圓括弧所包圍的參數列表。方法的主
體語句將在下一行開始並且必須縮進。
方法主體的首句可選擇性地是一句字元,用來說明方法的主要功能
例如:
"""print a finabo series up to n."""
2、默認參數值
默認值僅被設置一次,這與以前默認值為可變對象(如列表、字典和多數類實
例時)有很大的區別。
例如:
i=5
def f(arg=i):
print(arg)
i=6
f()
將會輸出 5
3、關鍵字參數
可以通過形式關鍵字參數調用方法
在方法調用中,關鍵字參數必須遵循位置參數。 所有的關鍵參數必須符合方法接受的參數
其中之一。但是他們的次序不重要,這包含非選擇的參數。沒有參數可以多次接受一個值。
當最後一個形參是__ name 時,它可以接受包含除了形式參數之外的所有關鍵字的字典,
_ name 必須在__ name 之前出現
4、可變參數列表
正常來說,這些可變參數常常放在正式參數列表的後面,因為它們會包攬所有傳遞給該方法
的剩餘輸入參數。任何出現在_ args 參數後低的正式參數會被認為是關鍵字參數,意味著它
們只能當關鍵字使用而不是位置參數。
>>> def concat(_ args,sep="/"):
...returnsep.join(args)
...
>>> concat("earth","mars","venus")
』earth/mars/venus』
>>> concat("earth","mars","venus", sep=".")
』earth.mars.venus』
5、拆分參數列表
當參數已經存在列表或者元組中,但是需要分拆以供要求分離位置參數調用的方法,如果單獨
分開它們無法使用,就需要寫一個方法用 _ 操作符來調用實現分拆列表或者元組中的參數。
同樣的使用形式,字典可以用__ 操作符實現關鍵字參數。
6、形式
lamdba a,b:a+b 該函數表示兩個數的和,像內嵌函數
7、代碼風格
對於 python,PEP8 作為許多項目應該遵守的編碼指導書而做的。 它提出了一種可讀而悅
目的編碼風格。 每位 python 開發者應該讀它。這里抽出一個重要的事項與你分享 :
? 用四個空格代替 tab 鍵
? 每行不要超過 79 個字元。
? 用空行分離方法和類,大塊代碼中的方法。
? 必要的時候為每行添加註釋。
? 用文檔字元串
? 在操作符兩邊用空格
? 用統一的風格命名自定義的方法和類
? 如果你的代碼打算用在國際環境中,請不要用想像的字元編碼。Python 默認的是
utf-8,在任何情況下可以用 Ascii .
? 同樣的,即使有很少機會讓說不同語言的人們讀代碼或者維護代碼,但在定義中不
要用非 ASCII 編碼字元。
❼ python web 教程,書籍推薦
其實更多需要的是web開發基礎知識,比如html,js,css等,這些和python都沒什麼關系
w3cschool是其中一個教程
具體的項目案例github上多的是