第11章 web和移動(dòng)應(yīng)用_第1頁
第11章 web和移動(dòng)應(yīng)用_第2頁
第11章 web和移動(dòng)應(yīng)用_第3頁
第11章 web和移動(dòng)應(yīng)用_第4頁
第11章 web和移動(dòng)應(yīng)用_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、高級大數(shù)據(jù)人才培養(yǎng)Python程序設(shè)計(jì)BIG DATA張 燕總主編張雪萍主編唐萬梅副主編景雪琴副主編2 of 56高級大數(shù)據(jù)人才培養(yǎng)11 . 1Web框架Django11 . 2PythonWeb開發(fā)11 . 3Python移動(dòng)應(yīng)用開發(fā)習(xí)題第十一章Web和移動(dòng)應(yīng)用3 of 3111.1Web框架Django第十一章 數(shù)據(jù)挖掘11.1.1 Django簡介Django是用Python編寫的開源Web開發(fā)框架,它鼓勵(lì)快速開發(fā),并遵循MVC設(shè)計(jì)。Django遵守BSD版權(quán),第一個(gè)正式版本于2008年9月發(fā)布。該套框架以比利時(shí)的爵士吉他手Django Reinhardt的名字命名。Django采用了M

2、TV模型M(Model)、模板T(Temple)和視圖V(View)的框架模式,其核心組件有:(1) 用于創(chuàng)建模型的對象關(guān)系映射;(2) 為最終用戶設(shè)計(jì)的完美管理界面;(3) 一流的URL設(shè)計(jì);(4) 設(shè)計(jì)者友好的模板語言;(5) 緩存系統(tǒng)。4 of 3111.1Web框架Django第十一章 數(shù)據(jù)挖掘11.1.2 Web框架框架(framework)特指為解決一個(gè)開放性問題而設(shè)計(jì)的具有一定約束性的支撐結(jié)構(gòu), 使用框架可以幫助用戶快速開發(fā)特定的系統(tǒng)。對于所有的Web框架,其本質(zhì)上是一個(gè)socket服務(wù)端,用戶的瀏覽器其實(shí)是一個(gè)socket客戶端2,3。一個(gè)Web框架的本質(zhì)是:(1) 瀏覽器發(fā)送

3、一個(gè)HTTP請求。(2) 服務(wù)器收到請求,生成一個(gè)HTML文檔。(3) 服務(wù)器把HTML文檔作為HTTP響應(yīng)的Body發(fā)送給瀏覽器。(4) 瀏覽器收到HTTP響應(yīng),從HTTP Body取出HTML文檔并顯示。所以,最簡單的Web框架就是先把HTML文檔用文件保存好,然后用一個(gè)現(xiàn)成的HTTP 服務(wù)器軟件接收用戶請求,再從文件中讀取HTML文檔并返回。Apache、Nginx、Lighttpd等常見的靜態(tài)服務(wù)器就是完成此工作的。5 of 3111.1Web框架Django第十一章 數(shù)據(jù)挖掘11.1.2 Web框架如果要?jiǎng)討B(tài)生成HTML文檔,就需要自己來實(shí)現(xiàn)上述步驟。不過,如果我們自己來編寫接收HT

4、TP請求、解析HTTP請求、發(fā)送HTTP響應(yīng)這些底層代碼,可能事倍功半。正確的做法是將底層代碼交由專門的服務(wù)器軟件實(shí)現(xiàn),我們專注于用Python生成HTML文檔。因?yàn)槲覀儾幌M佑|到TCP連接、HTTP原始請求和響應(yīng)格式,所以,需要一個(gè)統(tǒng)一的接口,以使我們可專心用Python來編寫Web業(yè)務(wù),這個(gè)接口就是Web服務(wù)網(wǎng)關(guān)接口(Web Server Gateway Interface,WSGI)。WSGI接口定義非常簡單,它定義了Web服務(wù)器與Web框架(或Web應(yīng)用)之間的標(biāo)準(zhǔn)接口,只要求Web開發(fā)者實(shí)現(xiàn)一個(gè)函數(shù),就可以響應(yīng)HTTP請求。Python中的wsgiref就是WSGI接口的一個(gè)模塊,

5、其功能相當(dāng)于Apache、Nginx。通過Python標(biāo)準(zhǔn)庫提供的wsgiref模塊可以開發(fā)一個(gè)Web框架,但在實(shí)際開發(fā)環(huán)境中,網(wǎng)頁很多,不可能通過創(chuàng)建多個(gè)def函數(shù)來實(shí)現(xiàn),需要分類管理,這樣就產(chǎn)生了MVC和MTV兩種模式。6 of 3111.1Web框架Django第十一章 數(shù)據(jù)挖掘11.1.3MVC和MTV模式1)MVC模式所謂MVC模式就是把Web應(yīng)用分為模型(Model)、控制器(Controller)、視圖(View)三層,它們之間以一種插件似的、松耦合的方式連接在一起。MVC模式如圖11-1所示。Model層實(shí)現(xiàn)系統(tǒng)中的業(yè)務(wù)邏輯View層用于與用戶交互Controller 層是Mo

6、del 與View 層溝通的橋梁,可接受用戶的輸入并調(diào)用Model層和View 層來完成用戶的請求。7 of 3111.1Web框架Django第十一章 數(shù)據(jù)挖掘11.1.3MVC和MTV模式2)MTV模式Django的MTV模式本質(zhì)上與MVC模式?jīng)]有什么差別,也是各組件之間保持松耦合關(guān)系,只是定義上有些許不同。Django的MTV模式如圖11-2所示。Model(模型):負(fù)責(zé)業(yè)務(wù)對象與數(shù)據(jù)庫的對象(ORM)。Template(模板):負(fù)責(zé)如何把頁面展示給用戶。View(視圖):負(fù)責(zé)業(yè)務(wù)邏輯, 并在適當(dāng)?shù)臅r(shí)候調(diào)用Model和Template。此外,Django還有一個(gè)URL控制器,它的作用是將

7、一個(gè)個(gè)URL的頁面請求分發(fā)給不同的View處理,View再調(diào)用相應(yīng)的Model和Template。8 of 3111.1Web框架Django第十一章 數(shù)據(jù)挖掘11.1.4Django的安裝在安裝Django前,系統(tǒng)需要預(yù)先安裝Python的開發(fā)環(huán)境。Django的下載地址:/download/。注意:目前Django1.6.x以上版本已經(jīng)完全兼容Python3.x。Window操作系統(tǒng)下Django的安裝如下。方法一:打開cmd命令窗口,執(zhí)行命令“pip3 install django”,返回信息提示“Successfully inst

8、alled django-1.10.6”,則安裝成功。方法二:下載Django壓縮包;將其解壓并和Python安裝目錄放在同一個(gè)根目錄下;進(jìn)入Django目錄,執(zhí)行“python setup.py install”命令后開始安裝。以上兩種方將Django安裝到Python的Lib下的site-packages目錄中。將C:Python35Libsite-packagesdjango;C:Python35 Scripts添加到系統(tǒng)環(huán)境變量中,添加完成后就可以使用Django的django-admin.py命令新建工程了。輸入以下命令檢查是否安裝成功:如果輸出了Django的版本號,則說明安裝正確

9、。9 of 56高級大數(shù)據(jù)人才培養(yǎng)11 . 1Web框架Django11 . 2PythonWeb開發(fā)11 . 3Python移動(dòng)應(yīng)用開發(fā)習(xí)題第十章Web和移動(dòng)應(yīng)用10 of 3111.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.1 創(chuàng)建項(xiàng)目1. 創(chuàng)建 HelloWorld 項(xiàng)目進(jìn)入項(xiàng)目目錄,執(zhí)行以下命令:django-admin startproject HelloWorld2. 項(xiàng)目目錄結(jié)構(gòu)創(chuàng)建的HelloWorld項(xiàng)目目錄結(jié)構(gòu)如圖11-3所示。HelloWorld:項(xiàng)目的容器。manage.py:一個(gè)實(shí)用命令行工具,以便各種方式與該Django項(xiàng)目進(jìn)行交互。HelloWorld/

10、settings.py: 項(xiàng) 目 的 設(shè) 置 / 配 置 。 HelloWorld/urls.py:項(xiàng)目的URL聲明,一份由Django驅(qū)動(dòng)的網(wǎng)站“目錄”。HelloWorld/wsgi.py:一個(gè)wsgi兼容的Web服務(wù)器入口,以便運(yùn)行項(xiàng)目。HelloWorld/ init .py:一個(gè)空文件,告訴Python該目錄是一個(gè)Python包。11 of 3111.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.1創(chuàng)建項(xiàng)目3. 啟動(dòng)服務(wù)(1)進(jìn)入HelloWorld 目錄,輸入以下命令啟動(dòng)服務(wù)器。# python manage.py runserver :8000是

11、讓其他客戶端連接到服務(wù)器;8000是端8000。(2)測試。如果不說明,那么端默認(rèn)為在瀏覽器輸入服務(wù)器的IP及端,如果服務(wù)器正常啟動(dòng),則輸出結(jié)果如圖11-4所示。12 of 3111.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.1創(chuàng)建項(xiàng)目4. 創(chuàng)建view.py文件在HelloWorld目錄下新建一個(gè)view.py文件,并輸入代碼:5. 綁定URL與視圖函數(shù)打開urls.py文件,刪除原來的代碼,將以下代碼復(fù)制粘貼到urls.py 文件中:13 of 3111.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.1創(chuàng)建項(xiàng)目6. 測試啟動(dòng)Django服務(wù)器,在瀏覽器中訪問項(xiàng)目,如圖11-

12、5所示。訪問日志如下:注意:如果在項(xiàng)目中代碼有改動(dòng),服務(wù)器會自動(dòng)監(jiān)測代碼的改動(dòng)并自動(dòng)重新載入,故如果已經(jīng)啟動(dòng)了服務(wù)器,則不用手動(dòng)重啟。14 of 3111.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.1創(chuàng)建項(xiàng)目7. url() 函數(shù)Django url()可以接收4個(gè)參數(shù):regex(必選)、view(必選)、kwargs(可選)、name(可選)。regex:正則表達(dá)式,與之匹配的URL會執(zhí)行對應(yīng)的第2個(gè)參數(shù)view。view:用于執(zhí)行與正則表達(dá)式匹配的URL請求。 kwargs:視圖使用的字典類型的參數(shù)。name:用來反向獲取URL。15 of 3111.2PythonWeb開發(fā)第

13、十一章 數(shù)據(jù)挖掘11.2.2 Django模板在11.2.1節(jié)中,使用django.http.HttpResponse()來輸出“Hello World!”,該方式將數(shù)據(jù)與視圖混合在一起,不符合Django的MVC思想。本節(jié)我們來介紹Django模板的應(yīng)用。模板是一個(gè)文本,用于分離文檔的表現(xiàn)形式和內(nèi)容。1. 模板應(yīng)用實(shí)例1)創(chuàng)建hello.html 文件在HelloWorld目錄下創(chuàng)建templates目錄并建立hello.html文件,整個(gè)目錄結(jié)構(gòu)如圖11-6所示。hello.html 文件代碼如下:注意:變量在模板中使用雙括號。16 of 3111.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖

14、掘11.2.2 Django模板1. 模板應(yīng)用實(shí)例2)編輯settings.py文件向Django說明模板文件的路徑,編輯HelloWorld/settings.py,修改TEMPLATES 中的DIRS為BASE_DIR+/templates,,如圖11-7所示。17 of 3111.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.2 Django模板1. 模板應(yīng)用實(shí)例3)編輯view.py文件修改view.py,增加一個(gè)新的對象,用于向模板提交數(shù)據(jù):這里使用render來替代之前使用的HttpResponse。render使用了一個(gè)字典 context作為參數(shù),字典context中元素

15、的鍵值hello對應(yīng)模板中的變量 hello 。18 of 3111.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.2 Django模板1. 模板應(yīng)用實(shí)例4)測試訪問地址:8000/hello,可以看到測試頁面,如圖11-8所示,其和圖11-5類似。此時(shí),已實(shí)現(xiàn)了使用模板來輸出數(shù)據(jù),從而將數(shù)據(jù)與視圖分離。19 of 3111.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.2Django模板2. 模板繼承模板可以用繼承的方式來實(shí)現(xiàn)復(fù)用。1)創(chuàng)建原始文件在項(xiàng)目的templates目錄中添加base.html文件,代碼如右:在這些代碼中,名為mainbody

16、的block標(biāo)簽是可以被繼承者們替換掉的部分。所有的% block %標(biāo)簽告訴模板引擎,子模板可以重載這些部分。20 of 31:11.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.2Django模板2. 模板繼承2)繼承原始文件在hello.html中繼承base.html,并替換特定block。hello.html修改后的代碼如右:第一行代碼說明hello.html繼承了base.html文件??梢钥闯觯a中使用相同名字的block標(biāo)簽來替換base.html中相應(yīng)的block。3)測試訪問地址:8000,輸出結(jié)果如下21 of 31庫提供了很好的支持

17、,包括PostgreSQL、MySQL、SQLite、這些數(shù)據(jù)庫提供了統(tǒng)一的調(diào)用API,可根據(jù)業(yè)務(wù)需求選擇不同的數(shù)應(yīng)用中最常用的數(shù)據(jù)庫,故本節(jié)我們以MySQL作為實(shí)例進(jìn)行介紹:client11.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.3 Django模型Django對各種數(shù)據(jù)Oracle 。 Django 為 據(jù)庫。MySQL是Web1. 安裝MySQL驅(qū)動(dòng)安裝時(shí)執(zhí)行以下命令pip3 install mysql2. 數(shù)據(jù)庫配置在項(xiàng)目的settings.py文件中找到DATABASES配置項(xiàng),將其信息修改為:。上面包含數(shù)據(jù)庫名稱和用戶的信息,它們與MySQL中對應(yīng)的數(shù)據(jù)庫和用戶設(shè)置相

18、同。Django根據(jù)這一設(shè)置將其與MySQL中相應(yīng)的數(shù)據(jù)庫和用戶連接起來。22 of 3111.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.3Django模型3. 定義模型1) 創(chuàng)建 AppDjango規(guī)定,如果要使用模型,必須創(chuàng)建一個(gè)App。使用以下命令創(chuàng)建一個(gè)名為TestModel的App:python manage.py startapp TestModel目錄結(jié)構(gòu)如右上:2) 編輯models.py文件修改TestModel/models.py文件,代碼如右:以上的類名代表了數(shù)據(jù)庫表名,且繼承了models.Model。類里面的字段代表數(shù)據(jù)表中的字段(name),數(shù)據(jù)類型則由C

19、harField(相當(dāng)于varchar)、DateField(相當(dāng)于datetime)確定。max_length參數(shù)限定了長度。23 of 31NSTALLED_APPS項(xiàng),修ngs.py文件ings.py中找到I道模型有變更的命令:python manage.py makemigrations TestModel。構(gòu)的命令:python manage.py migrate TestModel。11.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.3 Django模型3. 定義模型3)修改setti 接下來在sett 改如右:讓Django知?jiǎng)?chuàng)建表結(jié)表名組成結(jié)構(gòu):應(yīng)用名_類名(如TestM

20、odel_test)。其結(jié)果如圖:24 of 312)編輯urls.py文件3)測試訪問:8000/testdb,頁面顯示結(jié)果如上:11.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.3Django模型4 . 數(shù)據(jù)庫操作1)新建testdb.py文件在HelloWorld目錄中添加testdb.py文件,與views.py同級,然后添加數(shù)據(jù)。添加數(shù)據(jù)需要先創(chuàng)建對象,然后再執(zhí)行save函數(shù),相當(dāng)于MySQL中的INSERT。數(shù)據(jù)庫數(shù)據(jù)結(jié)果如右:25 of 3111.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.3Django模型5. 獲取數(shù)據(jù)Django

21、提供了多種方式來獲取數(shù)據(jù)庫的內(nèi)容。修改testdb.py文件,代碼如下:頁面顯示結(jié)果如下:26 of 3111.2PythonWeb開發(fā)11.2.3Django模型6. 更新數(shù)據(jù)更新數(shù)據(jù)可以使用save() 或update()。修改testdb.py文件,代碼如下:第十一章 數(shù)據(jù)挖掘頁面顯示結(jié)果如下:數(shù)據(jù)庫數(shù)據(jù)結(jié)果如下:27 of 3111.2PythonWeb開發(fā)11.2.3Django模型7. 刪除數(shù)據(jù)刪除數(shù)據(jù)庫中的對象只需調(diào)用該對象的delete()方法即可。修改testdb.py文件,代碼如下:第十一章 數(shù)據(jù)挖掘頁面顯示結(jié)果如下:數(shù)據(jù)庫數(shù)據(jù)結(jié)果如下:28 of 3111.2Python

22、Web開發(fā)第十一章 數(shù)據(jù)挖掘11.2.4Django Admin管理工具Django提供了基于Web的管理工具。Django自動(dòng)管理工具是 django.contrib 的一部分,可以在項(xiàng)目settings.py的INSTALLED_APPS中看到它。django.contrib是一套龐大的功能集,是Django基本代碼的組成部分。2. 使用管理工具啟動(dòng)開發(fā)服務(wù)器,然后在瀏覽器中訪問:8000/admin/,可看到登錄界面如下:1. 激活管理工具管理工具一般在生成項(xiàng)目時(shí)會在urls.py中自動(dòng)設(shè)置好,只要去掉注釋即可,其配置項(xiàng)如下:29 of 3111.2Pyth

23、onWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.4Django Admin管理工具3 . 創(chuàng)建超級用戶通過命令“python manage.py createsuperuser”來創(chuàng)建超級用戶:4. 登錄輸入用戶名、登錄:30 of 3111.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.4Django Admin管理工具5. 注冊數(shù)據(jù)模型為了讓管理頁面管理某個(gè)數(shù)據(jù)模型, 需要先在管理頁面中注冊該數(shù)據(jù)模型。修改TestModel/admin.py:刷新頁面后顯示結(jié)果如下:31 of 3111.2PythonWeb開發(fā)11.2.4Django Admin管理工具6. 復(fù)雜模型(1)在TestMo

24、del/models.py中增加一個(gè)更復(fù)雜的數(shù)據(jù)模型:第十一章 數(shù)據(jù)挖掘右面的兩個(gè)表中,Tag以Contact為外部鍵,一個(gè)Contact可以對應(yīng)多個(gè)Tag。我們還可以看到許多之前沒有見過的屬性類型, 如IntegerField,它用于存儲整數(shù)。32 of 3111.2PythonWeb開發(fā)11.2.4Django Admin管理工具6. 復(fù)雜模型(2)在TestModel/admin.py注冊多個(gè)模型:第十一章 數(shù)據(jù)挖掘如果之前未創(chuàng)建表結(jié)構(gòu),可使用以下命令創(chuàng)建:頁面顯示結(jié)果如下:33 of 3111.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.4Django Admin管理工具7.

25、自定義表單(1)用自定義管理頁面取代默認(rèn)的管理頁面修改后結(jié)果如下圖:比如上面的“Add contact”頁面,假如我們想要只顯示Name和Email部分,則修改TestModel/admin.py 如下:以上代碼定義了一個(gè)ContactAdmin類,用以說明管理頁面的顯示格式,其中的fields屬性定義了要顯示的字段。由于該類對應(yīng)的是Contact數(shù)據(jù)模型,在注冊的時(shí)候,需要將它們一起注冊。34 of 3111.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.4Django Admin管理工具7. 自定義表單(2)將輸入欄分塊每個(gè)輸入欄也可以定義自己的格式。修改TestModel/admi

26、n.py為:上面的代碼將輸入欄分為Main和Advance兩部分。代碼中的classes說明了它所在部分的CSS格式。Advance部分內(nèi)容被隱藏,它旁邊有一個(gè)Show 按鈕,用于展開;展開后可單擊Hide按鈕再將其隱藏,結(jié)果如下:35 of 31:11.2PythonWeb開發(fā)11.2.4Django Admin管理工具8. 內(nèi)聯(lián)(Inline)顯示Contact是Tag的外部鍵,所以可隱含外部參考關(guān)系。而在默認(rèn)的頁面顯示中,兩者是分開的,無法體現(xiàn)兩者的從屬關(guān)系。我們可以使用內(nèi)聯(lián)顯示來讓Tag在Contact的編輯頁面上顯示。修改TestModel/admin.py:第十一章 數(shù)據(jù)挖掘頁面顯

27、示結(jié)果如右36 of 31:11.2PythonWeb開發(fā)11.2.4Django Admin管理工具9. 列表頁的顯示我們也可以自定義頁面的顯示,比如在列表中顯示更多的欄目,這只需要在ContactAdmin中增加list_display 屬性:第十一章 數(shù)據(jù)挖掘列表頁顯示如右37 of 3111.2PythonWeb開發(fā)11.2.4Django Admin管理工具10. 搜索功能在管理大量記錄時(shí)常用搜索功能,可使用search_fields為列表頁增加搜索欄:第十一章 數(shù)據(jù)挖掘在本例中搜索了name為haut的記錄,顯示結(jié)果如上:38 of 3111.2 PythonWeb開發(fā)11.2.5

28、 Django Nginx+uwsgi 安裝配置在前面幾節(jié)中使用python manage.py runserver來運(yùn)行服務(wù)器,這只在測試環(huán)境中適用。正式發(fā)布的服務(wù),需要一個(gè)可以穩(wěn)定持續(xù)的服務(wù)器,比如apache、Nginx、lighttpd等,下面以Nginx為例介紹。1. 安裝基礎(chǔ)開發(fā)包在Centos下其安裝步驟如下:第十一章 數(shù)據(jù)挖掘2. 安裝 Python 包1)easy_install 包下載地址:/pypi/distribute。安裝步驟:2)pip包:下 載 地 址 : /pypi/pip。

29、安裝步驟:39 of 31ps://pypi/uWSGI。見:/en/latest/Options.html11.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.5Django Nginx+uwsgi 安裝配置3. 安裝 uwsgiuwsgi下載地址:httuwsgi參數(shù)詳解可參安裝步驟: 。下面測試uwsgi是否正常(安裝的主機(jī)IP為:27)。新建test.py文件,內(nèi)容如下:在終端運(yùn)行上面的代碼:在瀏覽器內(nèi)輸入http:/ 27:8001,顯示結(jié)果如

30、圖:40 of 3111.2PythonWeb開發(fā)11.2.5Django Nginx+uwsgi 安裝配置4. 安裝Django參照前述Django的安裝過程進(jìn)行安裝。測試Django是否正常:第十一章 數(shù)據(jù)挖掘修改創(chuàng)建項(xiàng)目中的 setting.py 文件:在瀏覽器內(nèi)輸入27:8000,顯示結(jié)果如下:41 of 3111.2PythonWeb開發(fā)11.2.5Django Nginx+uwsgi 安裝配置5. 安裝 NginxNginx安裝包下載地址:/download/。第十一章 數(shù)據(jù)挖掘顯示如右下版本信息,證明已安裝成功。42

31、 of 3111.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.5Django Nginx+uwsgi 安裝配置6. uwsgi 配置uwsgi支持ini、xml等多種配置方式,下面以ini為例,在/ect/目錄下新建添加如下配置:uwsgi9090.ini,7. Nginx 配置找到Nginx的安裝目錄(如/usr/local/nginx/),打開conf/nginx.conf 文件,修改server配置:43 of 3111.2PythonWeb開發(fā)第十一章 數(shù)據(jù)挖掘11.2.5Django Nginx+uwsgi 安裝配置8. 測試設(shè)置完成后,在終端運(yùn)行:在瀏覽器輸入http:/I

32、P:PORT,就可以看到如下結(jié)果。44 of 56高級大數(shù)據(jù)人才培養(yǎng)11 . 1Web框架Django11 . 2PythonWeb開發(fā)11 . 3Python移動(dòng)應(yīng)用開發(fā)習(xí)題第十章Web和移動(dòng)應(yīng)用45 of 3111.3Python移動(dòng)應(yīng)用開發(fā)第十一章 數(shù)據(jù)挖掘11.3.1Python KivyKivy是一套基于Python的跨平臺快速應(yīng)用開發(fā)框架, 對于多點(diǎn)觸控有良好的支持。Kivy依據(jù)LGPLv3 協(xié)議發(fā)布,支持Linux、Windows、MacOS、Android和iOS平臺,支持各個(gè)平臺的輸入設(shè)備協(xié)議。其圖形核心圍繞OpenGL ES2構(gòu)建,可以充分利用目標(biāo)平臺的GPU加速。使用Ki

33、vy能讓開發(fā)者快速完成簡潔的交互原型設(shè)計(jì)。另外,Kivy還支持代碼重用和部署,是一款頗讓人驚艷的NUI框架。因?yàn)镵ivy是跨平臺的,所以只寫一遍代碼,就可以同時(shí)生成安卓及iOS的App。Kivy最新的穩(wěn)定版本可以在/#download上找到。在安裝Kivy前,系統(tǒng)需要預(yù)先安 裝Python的開發(fā)環(huán)境。在Window操作系統(tǒng)下安裝Kivy的過程如下。在Python IDLE中,輸入如下代碼:執(zhí)行上面的Python代碼后如果看到了test 窗口, 說明安裝成 功了。注意:系統(tǒng)環(huán)境變量應(yīng)包含/usr/local/bin路徑,解釋器為/Applications/Kivy.a

34、pp/ Contents/Resources/venv/bin/python。46 of 3111.3Python移動(dòng)應(yīng)用開發(fā)第十一章 數(shù)據(jù)挖掘11.3.2 Python移動(dòng)應(yīng)用開發(fā)1. 用Kivy開發(fā)一個(gè)Python App1)創(chuàng)建main.py文件創(chuàng)建一個(gè)main.py文件,寫入如下代碼:2. 運(yùn)行Python App其結(jié)果如下:2)創(chuàng)建hello.kv文件創(chuàng)建一個(gè)hello.kv文件,寫入如下代碼:說明: main.py 是入口函數(shù), 定義了一個(gè)HelloApp類,該類繼承了kivy.app;hello.kv 文件是Kivy程序,相當(dāng)于定義界面風(fēng)格等,該文件命名規(guī)則為類名小寫且去除“App”。47 of 3111.3Python移動(dòng)應(yīng)用開發(fā)第十一章 數(shù)據(jù)挖掘11.3.2Python移動(dòng)應(yīng)用開發(fā)3安uildozer工具以上編碼創(chuàng)建了一個(gè)Python App程序,該程序可以直接在MacOS、Linux、Windows 平臺上運(yùn)行, 那么如何讓它在Android或iOS系統(tǒng)上運(yùn)行呢? 我們知道程序要在Android或iOS系統(tǒng)上運(yùn)行,需要將其打包成apk安裝程序,因此需要用到buildozer

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論