導航:首頁 > 編程語言 > pythonweb應用程序

pythonweb應用程序

發布時間:2022-08-02 21:55:12

A. python 如何開發高效漂亮的輕量級 Web 應用

痛點

從我開始折騰數據分析工具的那一天,就沒有想明白一件事兒 —— 我打算把數據分析的成果做成一個 Web 應用,為什麼這么難?

我需要的核心功能,無非是在網頁上接收用戶輸入,然後做分析處理,把分析結果反饋給用戶,完事兒。

可是這談何容易?

很多人都會微笑著告訴你,想做 Web 應用?這得學前端編程, HTML + Javascript 了解一下吧!

什麼?你還需要在後台做數據分析?那你就得學 Web 框架了。

你說喜歡 Python ?那就學個 Django 或者 Flask 好了。

我也不是沒有看過 Django 和 Flask 的教程,還曾經付費學習過。光是 Django 配置環境,就夠寫一章出來。

作為學習的中間成果,我還寫了這篇《如何用 Python 做 Web 開發?——Django 環境配置》分享給你。

真正讓我痛苦的,不是 Web 框架的操作有多麼瑣碎,而是教程里的案例,為什麼都那麼奇怪?

幾乎所有的教程,都指向一個目標:

來,我教你做一個 blog 出來!

我用你教?!

我要是想用 blog ,可以直接注冊一個免費的啊!為什麼我要自己開發個 blog 出來?

為什麼你就不能告訴我,該怎麼把我目前的數據分析結果,迅速挪到 Web 頁面上,跟用戶實時交互?

雖然二者的結果,都是做一個 Web 應用出來。但是,它們關注的焦點,需要的功能,能一樣嗎?

但是人家寫書和做教程的人,就是不疾不徐,堅持一定要教會你,如何做一個 blog 出來……

你不學,又能怎麼辦呢?你難道想只憑 Python 腳本,就做一個 Web 應用出來?

還真別說,最近,這個事兒從幻想,變成了現實

樣例

這不,我就用純 Python 腳本寫了個 Web 應用。

我編寫的代碼里,沒有一絲半毫的 Web 框架,Javascript,甚至是 HTML 。

這玩意兒能用嗎?

你自己來試試看。

請你打開瀏覽器,輸入以下鏈接:https://helloworld-streamlit.herokuapp.com/

你會看到下面的初始化界面。

初始化完畢之後,頁面會分成左右兩欄。左面是兩個下拉候選框,分別讓你指定需要分析的數據范圍。

上面一個,是事件類型;

下面一個,是事件發生歸屬地。

如果你看過我的文章《如何用 Python 和循環神經網路預測嚴重交通擁堵?》,應該對這個數據集很熟悉。

只不過,當時我們更注重的,是用循環神經網路搭建了一個嚴重擁堵事件預測模型。

而今天,我們是要進行探索性數據分析,也就是根據我們感興趣的目標,對數據進行整理操作,然後可視化顯示。

選定之後,你會看到右側提示兩個信息:

怎麼樣?

麻雀雖小,五臟俱全。

雖然咱們這個 Web 應用很簡單,不過交互分析該有的功能和流程,基本上都涵蓋了。

你可能會問:

王老師,編這么一個應用出來,不簡單吧?

讓我帶你到幕後,看看是不是很復雜。


幕後

我把這個應用的全部源代碼,都為你存儲到了 Github 上。請你訪問這個網址獲取:https://github.com/wshuyi/demo-helloworld-streamlit


可以看到,一共包含了 4 個文件。

有意思的是,其中 3 個,包括:

都只是部署到遠程伺服器時,需要用到的配置文件而已。

也就是說,只有最後一個helloworld.py是主角,它包含了實現咱們全部互動式數據分析功能的 Python 腳本文件。

這代碼,少說也得有幾百行吧?

別擔心,打開來看看:

上面這張截圖,就已經包含了實現交互數據分析功能的全部代碼。

神奇吧?


解讀

這么短的代碼,為什麼能有如此強大的功能?

這是因為它背後使用的一個軟體包,叫做streamlit。

它是干什麼用的?

一言以蔽之,給你賦能,讓你能夠不去操心什麼前端後端。只寫 Python ,只關注功能,你就能寫出一個互動式 Web 應用出來。

當然,既然最後是 Web 應用,那麼實際上前後端的功能都是齊備的。

只不過,這些交由 Streamlit 來幫你費心操辦。你根本不用管。


爆發

為什麼會有人做了這么一款神器出來?

原因很簡單,咱們前面提到的痛點,是大夥兒都有的。

咱們這些麻瓜(Muggle),遇到痛點只能忍著。

但是真正的魔法師(優秀程序員),是忍不了的。

在這段來自 PyData LA 2019 的視頻里,Streamlit 的 CEO Adrien Treuille 談及了他在數據智能企業中,長期遭遇的痛點。

最大的痛點,就是數據科學家訓練好機器學習模型後,需要驗證效果,和用戶反饋溝通。

但是,做機器學習的工程師本身,並不掌握這一整套的工具棧。

所以,就得在把全部的數據分析和模型訓練工作完成後,把這東西移交給一個工具製作團隊

人家做完以後,就告訴數據科學團隊說,做好了。但是注意,現在處於需求凍結階段。這個應用你們可以隨便用,只是別亂改。改壞了我們管不了。因為最近兩個月,我們還得給其他若干數據分析團隊做 app 。大概幾個月以後,我們又能回來幫助你們了……

Adrien Treuille 很敏銳地捕捉到了這個長期痛點,於是在 2018 年, 創立了 streamlit 。

目標很簡單,給數據科學團隊提供簡單的工具,讓他們使用已經掌握的 Python 編程技能,就能直接做 Web 應用。

什麼 「等上兩三個月不許改」?!你們自己慢慢兒玩兒去吧,我們想怎麼改,就怎麼改!

至於做出來的東西嘛,可以是這樣的:


資源

看到這里,是不是心動了?也打算學習一下 Streamlit ?

沒問題,我前面給你提供的樣例,就在 github 上,你可以直接查看源碼

如果你希望重現這個小應用,並且一步步學習掌握 Streamlit 的基礎知識和技能,我也已經為你寫好了一份手把手的教程。地址在這里https://sspai.com/post/58474。

它不僅教你如何設置環境,安裝工具,寫作代碼,甚至連如何免費部署到 heroku 平台,讓用戶使用,都毫無保留地教給了你。

那篇文章,我用於參加少數派年度徵文活動,所以就不能全文展示在這里了。

讀完以後,如果你覺得有收獲,歡迎在少數派平台上幫我點個贊。謝謝支持!


思考

嘗試過之後,你應該不難發現,Streamlit 給你帶來了什麼。

如果你學過 Javascript 和 Flask, Django 等 Web 應用開發技術,Streamlit 可以加快你的 Web 應用開發與測試進程。

如果你還沒有學過上述技術, Streamlit 可以給你賦能,讓你一下子有了把數據分析結果變成產品的能力。

給你講點兒更激進的。

有人已經希望能用它替代掉 Flask 用於產品發布了。

還有人說,將來寫技術文檔,也應該充分使用 Streamlit 。

甚至,還把它比作了數據科學界的 iPhone 。

這里,它是借喻 iPhone 開啟智能手機時代,說明 Streamlit 的劃時代性

不希望你也變得如此激進。

因為這里提到的每一種功用,現在還都有非常專業的工具做的更好,而且新的工具也在不斷涌現。

例如說,我們在多個教程中一直使用 Jupyter Notebook 。

現在憑借 Voila 擴展的加持,你也可以很輕松地把 Jupyter Notebook 變成 Web app ,而且可以免費運行在 mybinder 上面。

但是,你可以看到,一個新的工具,以一種簡單,而不是更繁復的辦法,解決一個功能痛點,是一件多麼令人欣喜的事兒。

看了這篇文章,可能會給你一種誤解,似乎 JavaScript 為代表的前端編程技術,再也不需要學了。

其實不是這樣的。

可以想像,開發門檻降低以後,將來會有更多的人使用 Python 來做 Web 應用。

用 Streamlit 這樣的方法,他們只是開發出了一個原型。

要是想打造精品,就必須精細調控很多細節。

這時候, 如果你精通 Javascript ,那你潛在的合作對象一下子就多了起來,你掌握的這門技術,也就有了更大的價值。

還記得嗎?我不止一次給你強調過,比起一個工具自身的能力來,協作網路更重要。忘了的話,記得復習《學 Python ,能提升你的競爭力嗎?》。

這就好像印刷術的發明,不是讓會寫字這件事兒變得失去價值,而是全社會都增大了對好作品的渴求。深刻的思考,加上有效的文字表達,會讓你生存得更好。

當然,如果你不希望精通寫作技藝,只是想做一個抄書匠糊口。那麼印刷術就可能會替代你的工作,結果就不那麼美妙了。


小結

這篇文章,我為你介紹了 Streamlit 這款有趣的工具。希望你讀過之後,掌握了以下知識點:

更多Python知識,請關註:Python自學網!!

B. Python的代表性Web框架有哪些

1. Django
Django是一個開源的Web應用框架,由Python寫成,支持許多資料庫引擎,可以讓Web開發變得迅速和可擴展,並會不斷的版本更新以匹配Python最新版本,如果是新手程序員,可以從這個框架入手。
2. CherryPy
CherryPy是一種用於Python的、簡單而非常有用的Web框架,其主要作用是以盡可能少的操作將Web伺服器與Python代碼連接,其功能包括內置的分析功能、靈活的插件系統以及一次運行多個HTTP伺服器的功能,可與運行在最新版本的Python、Jython、Android上。
3. Web2py
web2py 是一個為Python語言提供的全功能Web應用框架,旨在敏捷快速的開發Web應用,具有快速、安全以及可移植的資料庫驅動的應用,兼容
Google App Engine。
4. TurboGears
TurboGears可以快速實現Web應用程序開發,富含豐富的特殊性能,可以解決更多的框架領域問題,從簡單到復雜的項目都可以開發,並具有實時的多資料庫支持和靈活的ORM,簡單的文檔和最小的設置使它成為一個理想的使用框架。
5. Pylons
Pylons是一個開源的Web應用框架,使用Python語言編寫,它對WSGI標准進行了擴展應用,提升了重用性且將功能分割到獨立的模塊中,而且提供了在線調試器,易於錯誤跟蹤!

C. Python開發web有哪些優勢

Python開發web有哪些優勢

1、易於使用和閱讀

有幾個因素可以簡化Python在Web開發中的使用:

低入門門檻 Python與我們日常生活中使用的英語相似。語法的簡單性使您可以處理復雜的系統,並確保所有元素之間都具有明確的關系。因此,更多的新手程序員可以學習該語言並更快地加入編程社區。

良好的可視化 效果通過使用不同的圖和圖表,可以以易於理解的格式表示數據。它們是可視化呈現和理解數據的有效方法。Web開發公司利用Python庫(例如Matplotlib)來可視化數據並創建清晰且易於理解的報告。

Python非常易於閱讀,因此開發人員通常在理解由其他程序員編寫的代碼時不會遇到任何問題。這可以促使從事同一項目的開發人員之間的通信效率更高。

推薦學習《Python教程》。

2、非同步編碼

由於沒有死鎖或研究爭執或任何其他令人困惑的問題,因此使用Python 編寫和維護非同步代碼無需花費太多精力。此類代碼的每個單元分別運行,從而使您能夠更快地處理各種情況和問題。

3、較少限制的編程方法

與其他編碼語言(例如Java)相比,Python具有較少限制的編程方法。它具有多種範例,可以支持多種編程風格,包括過程性,面向對象和功能性(命令性)。這使Python成為初創公司的絕佳語言,因為項目可能需要隨時更改方法。

4、企業應用集成

Python是企業軟體應用程序的流行選擇,這在很大程度上要歸功於Python與傳統上用於企業開發的其他語言(例如Java,PHP和.NET)的流暢集成。

Python直接與Java,C ++或C代碼進行調用,從而可以對大多數常用協議和數據格式進行大量的過程式控制制和實現。

除此之外,它還可以用於組裝基礎結構的新舊片段,這是復雜移動應用程序中的典型情況。

5、可以使用Python框架快速進行Web開發

Python的另一個優點是它具有許多簡化開發過程的框架。根據您的工作,可能需要不同的框架。

下面是4個著名的框架:

Django:此框架非常適合成熟的Web應用程序和中檔可擴展項目。它具有內置功能,並允許重復使用代碼,對代碼的不同組成部分進行一致的修改以及其他簡化Web開發的功能。Django可與Oracle SQL,PostgreSQL,MySQL和其他知名資料庫完美配合。

Pyramid:使用此框架,您可以從小規模開始,並根據需要擴展規模。金字塔可以與各種資料庫和應用程序一起使用,也可以與插件一起擴展-開發人員可以添加所需的任何功能。當您需要在一項任務中實施各種解決方案時,這很方便。

TurboGears:TurboGears由Repoze,WebOb和Genshi等幾個組件組成,並且基於MVC架構。這對於快速,高效的Web應用程序開發很有用,而且更易於維護。使用此框架,您可以分別使用最小或完整堆棧模式編寫小型或復雜的應用程序。

Flask:該框架的理念是提供一個易於管理的,易於定製的解決方案。Flask將自己定義為一個微框架,最常用於主要優先考慮精益功能的小型解決方案。該框架還用於創建原型。

6、科學計算庫方便

有各種各樣的軟體包和庫可用於開發科學和數字應用程序,以及工具包(例如VTK 3D和MayaVi),單獨的成像庫以及許多其他工具。最常用的是:

5個常見的科學計算庫:

SciPy(科學數字圖書館);

Pandas(數據分析庫);

IPython(命令外殼);

NumPy(基本數值軟體包);

Natural Language Toolkit(Library For Mathematical And Text Analysis : 用於數學和文本分析的庫)。

7、用於機器學習和AI

機器學習(ML)和人工智慧(AI)技術越來越受到關注,因此越來越多的開發人員正在嘗試將它們納入各種項目中。如果使用正確的語言,這是可能的。

根據讓·弗朗索瓦·普吉,IBM的機器學習部門的代表,Python是ML和AI項目的頂尖語言,許多開發商同意。Python具有高效的ML軟體包,用於可視化結果的工具,並且遠遠超出了數據分析和其他使該應用程序領域受益的功能。

Python確實是機器學習和人工智慧最火熱的語言,沒有之一。

最典型的用語在線語音合成,在線語音識別,如果你的項目是建立一個人工智慧的web應用,那麼Python再適合不過了。

8、作為應用程序腳本

由於Python與C,C ++和Java的強大集成,Python可以很方便地用於應用程序腳本編寫。從一開始就被設計為可嵌入的,它對於自定義大型應用程序並為其進行擴展非常有用。

不敢說Python可以代替Lua,不過Python可以和Lua那樣被嵌入C/C++中。

9、軟體測試

Python用於測試自動化。許多QA自動化專家選擇Python是因為它具有簡單的學習曲線-對於技術背景較為有限的人(強大的社區,清晰的語法和可讀性)也非常有用。Python甚至有一個易於使用的單元測試框架(例如,您可以使用它對移動應用程序執行地理位置測試)。

M年前我在一家路由生產商上班,那時候我看到測試部門用Tcl腳本去測試路由器埠,我當時就覺得很詫異,畢竟Tcl腳本的語法真的很怪異,相比這點,Python的語法真的干凈簡潔。

10、在原型製作中使用

用Python創建原型已被證明是一個快速而簡單的過程。編程語言的敏捷性使代碼重構變得容易,並且可以將初始原型快速開發為最終產品。

11、開源

Python具有開放源代碼許可證,該許可證使用戶可以輕松訪問它,並有助於重新分發和無限制的修改。開發人員可以自由使用該語言並為它的改進做出貢獻。

12、伺服器端腳本

如上所述,使用Python進行伺服器端腳本編寫的優點之一是其簡單的語法,從而大大加快了處理速度。該代碼由功能模塊及其之間的連接組成,可讓您根據用戶操作執行程序演算法。Python還支持Web開發中所需的圖形用戶界面。

13、便攜性和交互性

Python具有動態語義和快速原型製作的出色功能,這要歸功於它的交互性和可移植性。它可以輕松地嵌入各種應用程序中,甚至是使用不同編碼語言的應用程序。因此,您可以輕松修復新模塊並擴展Python的核心詞彙。它可以連接各種組件。難怪它有時被稱為「膠水語言」。

D. python做web開發有哪些好處和不足

python適合Web開發嗎?
當然!python涉及的面十分廣泛,不過使用python進行開發,你需要先掌握python的基礎知識,然後學習python Web框架,比如Django、flask等。總而言之,python這門優美的語言是非常適合Web開發的。
python做Web開發有優勢嗎?
第一、易於使用和閱讀
有幾個因素可以簡化python在Web開發中的使用:
低入門門檻:python與我們日常生活中使用的英語相似,語法的簡單性使您可以處理復雜的系統,並確保所有元素之間都具有明確的關系;因此,更多的新手程序員可以學習該語言並更快地加入編程社區。
良好的可視化:效果通過使用不同的圖和圖表,可以以易於理解的格式表示數據。它們是可視化呈現和理解數據的有效方法,Web開發公司利用python庫來可視化數據並創建清晰且易於理解的報告。
易於閱讀:python非常易於閱讀,因此開發人員通常在理解由其他程序員編寫的代碼時不會遇到任何問題,這可以促使從事同一項目的開發人員之間的通信效率更高。
第二、非同步編碼
由於沒有死鎖或研究爭執或任何其他令人困惑的問題,因此使用python編寫和維護非同步代碼無需花費太多精力。此類代碼的每個單元分別運行,從而使您能夠更快地處理各種情況和問題。
第三、較少限制的編程方法
與其他編程語言對比,python具有較少限制的編程方法。它具有多種範例,可以支持多種編程風格,包含過程性、面向對象和功能性。這使python成為初創公司的絕佳語言,因為項目可能需要隨時更改方法。
第四、企業應用集成
python是企業軟體應用程序的流行選擇,這在很大程度上要歸功於python與傳統上用於企業開發的其他語言的流暢集成。
python直接與Java、C++或C代碼進行調用,從而可以對大多數常用協議和數據格式進行大量的過程式控制制和實現。除此之外,它還可以用於組裝基礎結構的新舊片段,這是復雜移動應用程序中的典型情況。
第五、可以使用python框架快速進行Web開發
python的另一個優點是它具有許多簡化開發過程的框架,根據您的工作,可能需要不同的框架。
第六、科學計算庫方便
有各種各樣的軟體包和庫可用於開發科學和數字應用程序,以及工具包,單獨的成像庫以及許多其他工具。

E. Python 有哪些好的 Web 框架

1、Django
Python中最全能的Web開發框架,各種功能完備,可維護性和開發速度都一級棒,不少人反應Django框架慢,它主要慢在DjangoORM與資料庫的交互上,所以是否使用Django框架,需要取決於項目對資料庫交互的要求以及各種優化,而對於Django的同步特性導致吞吐量小的問題,可以通過Celery等解決,這並不是一個致命問題。
2、Tornado
非同步,性能強悍,然而它相比Django框架來說,相對原始,很多東西需要自己去處理,隨著項目的逐漸擴大,框架所能提供的功能也會越來越小,更多的東西需要團隊自己去實現,而大項目往往需要性能的保證,這時它就是最佳的選擇。
3、Flask
微框架,可以說是Python代碼寫得最好的項目之一,它的靈活性也是把雙刃劍,能使用好Flask框架,即可以做成Pinterest,用不好就是災難,它是一個微框架,但也可以做成規模化的Flask,加上它可以自由選擇自己的資料庫交互組件,而且加上celery+redis等非同步特性之後,Flask的性能相對Tornado也不相上下,也許Flask的靈活性可能是某些團隊更需要的。
4、Twisted
前面提到的3個Web框架都是圍繞應用層HTTP展開的,而Twisted則不同,它是一個用Python語言編寫的事件驅動的網路框架,對於追求伺服器性能的應用,它是個非常不錯的選擇。
它支持很多協議,包括傳輸層的UDP、TCP、TLS,以及應用層的HTTP、FTP等,對於這些協議,Twisted提供了客戶端和伺服器方面的開發工具。
它是一個高性能的編程框架,在不同的操作系統上,Twisted利用不同的底層技術實現了高性能通信,在開發方法上,Twisted引導程序員使用非同步編程模型,它提供了豐富的Defer、Threading等特性來支持非同步編程。

F. 用python開發一個物流web代碼

詳細如下。
一個名叫「Remi」的Python庫,就是用來開發WebApp的。1.Remi庫簡介
Remi是一個用於Python應用程序的GUI庫,它將應用程序的界面轉換為HTML,以便在Web瀏覽器中呈現。嚴格地說,我們不能用Remi庫來編寫傳統的網站,而只能將它當成Web形式的Tkinter庫(Python最經典的圖形界面庫)來使用。如果要做網站,還是要老老實實學點前端知識,然後結合Python的Flask框架來開發。
2.Remi庫的安裝
Remi可以採用pip命令安裝
3.Remi庫的代碼
運行這段代碼後,瀏覽器會自動打開一個本地的網址,出現如下圖所示的界面。將「127.0.0.1」換成IP地址,就能通過其他電腦、手機的瀏覽器來訪問了。
點擊「請點擊這里」按鈕,界面會發生變化,如下圖所示。不用寫復雜的JS代碼,在Remi的支持下,網頁交互就變得這么簡單。如果需要了解更多關於Remi庫的資源,可以訪問github或者官方文檔。
github地址:https://github.com/dddomodossola/remi
文檔地址:https://remi.readthedocs.io/en/latest/
基於Remi編寫基於Web的物聯網應用程序,既然是編寫物聯網應用程序,那麼肯定還需要安裝siot庫。這也是「虛穀物聯」團隊開發的Python庫,因為MQTT的官方Python庫(paho-mqtt)編寫出來的代碼冗長,不好理解,於是委託上海蘑菇雲團隊在paho-mqtt的基礎上進行了新的封裝。siot庫可以通過pip命令來安裝,命令如下:
pipinstallsiot

G. Python程序如何應用到WEB頁面中

python有很多的web框架,用這些框架即可開發web,推薦幾個web框架給你,djang----這個框架最強大,也是最有名應用最廣泛的,web.py和web2py-----輕量級的web框架,flask等!

H. Python可以寫Web應用程序么

可以的,Python是無所不能的

閱讀全文

與pythonweb應用程序相關的資料

熱點內容
字母h從右往左跑的c語言編程 瀏覽:127
安卓手機如何擁有蘋果手機橫條 瀏覽:763
業余編程語言哪個好學 瀏覽:135
按照文件夾分個壓縮 瀏覽:104
航空工業出版社單片機原理及應用 瀏覽:758
如何在電信app上綁定親情號 瀏覽:376
安卓的怎麼用原相機拍月亮 瀏覽:805
配音秀為什麼顯示伺服器去配音了 瀏覽:755
c盤清理壓縮舊文件 瀏覽:325
app怎麼交付 瀏覽:343
圖蟲app怎麼才能轉到金幣 瀏覽:175
如何做徵文app 瀏覽:446
用什麼app管理斐訊 瀏覽:169
安卓如何下載寶可夢劍盾 瀏覽:166
編譯器開發屬於哪個方向 瀏覽:940
megawin單片機 瀏覽:687
以色列加密貨幣監督 瀏覽:909
程序員前端現在怎麼樣 瀏覽:499
伺服器和介面地址ping不通 瀏覽:557
linux命令返回上級目錄 瀏覽:899