python web开发项目 源码_真零基础Python开发web
Python開發(fā)web服務(wù)的優(yōu)勢(shì)是開發(fā)效率高,可能只需要java五分之一的代碼量。
Python搭建web服務(wù)有許多框架,本文介紹Django和bottle兩個(gè)框架。
Django
安裝
首先,安裝該框架
安裝成功,版本是1.11.28. 框架的文件安裝在python27Scripts目錄下(搜索電腦中Python安裝目錄下的Scripts就對(duì)了)。
建立項(xiàng)目
先進(jìn)入python27Scripts目錄,建立項(xiàng)目jinanwx(名稱隨便起)
同一個(gè)目錄下可以看到新建立工程的目錄
開發(fā)自己模塊
進(jìn)入python27Scriptsjinanwxjinanwx。新建我們自己的模塊
jgotest01.py里面寫簡(jiǎn)單的代碼如下
模塊功能就是返回個(gè)json格式結(jié)果。
修改urls模塊
然后需要改urls.py模塊
目錄文件如下
就這么簡(jiǎn)單,新建一個(gè)文件再修改一個(gè)文件,就成了。
啟動(dòng)服務(wù)
回到上一級(jí)目錄啟動(dòng)服務(wù)
啟動(dòng)成功,瀏覽器訪問試試
bottle
開發(fā)功能不是特別復(fù)雜的web服務(wù),可以考慮使用bottle框架,它比Django輕量。bottle例子在Linux下演示。
安裝
使用bottle框架首先安裝。一個(gè)指令搞定。
#?pip?install?bottle??進(jìn)入Python命令行import bottle,沒報(bào)錯(cuò)就是成功了。
代碼
我的web服務(wù)就一個(gè)文件bottleweb.py,代碼如下,一些解釋在代碼的注釋里
#coding=utf-8??from?bottle?import?(run,?route,?get,?post,?put,?delete,?request,?hook,?response,?static_file,?app)??import?json??import?MySQLdb?#本例子需要操作數(shù)據(jù)庫(kù),否則可以不寫這行,這個(gè)數(shù)據(jù)庫(kù)包pip估計(jì)安裝不會(huì)成功,我是用yum?install?MySQL-python成功的??import?sys??reload(sys)????sys.setdefaultencoding('utf8')??import?bottle??app?=?bottle.default_app()#處理靜態(tài)資源需要定義,沒有靜態(tài)資源可以不寫這行??#搭建vue腳手架前后臺(tái)聯(lián)調(diào)時(shí)要下面兩個(gè)@hook內(nèi)容,否則會(huì)報(bào)跨域訪問資源的錯(cuò)誤??@hook('before_request')??def?validate():??????REQUEST_METHOD?=?request.environ.get('REQUEST_METHOD')??????HTTP_ACCESS_CONTROL_REQUEST_METHOD?=?request.environ.get('HTTP_ACCESS_CONTROL_REQUEST_METHOD')??????if?REQUEST_METHOD?==?'OPTIONS'?and?HTTP_ACCESS_CONTROL_REQUEST_METHOD:??????????request.environ['REQUEST_METHOD']?=?HTTP_ACCESS_CONTROL_REQUEST_METHOD??@hook('after_request')??def?enable_cors():??????response.headers['Access-Control-Allow-Origin']?=?'*'??????response.headers['Access-Control-Allow-Methods']?=?'GET,POST,PUT,DELETE,OPTIONS'??????response.headers['Access-Control-Allow-Headers']?=?'*'??@route('/test2020/dist/')#靜態(tài)資源在web服務(wù)下的地址,沒放前端的靜態(tài)資源這幾個(gè)route和app.route可以不寫??def?stat(path):??????return?static_file(path,?root='./dist/')??@app.route('/test2020/dist/static/js/')????def?js(path):??#這幾個(gè)目錄我寫成這樣是因?yàn)関ue打包完后目錄結(jié)構(gòu)就是dist?里面static等等??????return?static_file(path,?root='./dist/static/js/')??@app.route('/test2020/dist/static/css/')???def?css(path):???????return?static_file(path,?root='./dist/static/css/')??????@get('/test2020/date')#返回某個(gè)表中的日期,看sql你就明白了??def?helloins():??????db?=?MySQLdb.connect("127.0.0.1",?"yourusername",?"yourpassword",?"yourDBname",?charset='utf8'?)??????cursor?=?db.cursor()??????sql?=?"select?DISTINCT?date?from?testtable"??????print?sql??????cursor.execute(sql)??????data?=?cursor.fetchall()??????jsondata={}??????results=[]??????for?row?in?data:??????????result?=?{}??????????result['DATE']?=?row[0]??????????results.append(result)??????jsondata['code']=0??????jsondata['datas']=results??????return?jsondata??#返回json格式為了方便前端vue接收處理,其實(shí)返回各種類型都可以??????@get('/test2020/helloworld')??def?helloworld():??????return?'hello?world!'??????if?__name__?==?'__main__':??????run(host='0.0.0.0',?port=2020,?debug=True,?reloader=True)??bottleweb.py所在目錄執(zhí)行
#python?bottleweb.pyweb服務(wù)就啟動(dòng)了。瀏覽器訪問http://127.0.0.1:2020/test2020/helloworld看效果。
如果安裝了MySQL數(shù)據(jù)庫(kù)可以測(cè)試test2020/date的url是否能返回結(jié)果
數(shù)據(jù)庫(kù)只要有下面的數(shù)據(jù)就可以
前端頁(yè)面是這個(gè)樣子的,給用戶選擇某個(gè)日期。
前端是用vue+vux來開發(fā)的,開發(fā)完打包打出的東西上傳到代碼中提到的dist靜態(tài)資源目錄下。
如果覺得上面的代碼有點(diǎn)復(fù)雜,可以把所有route, app.route的東西刪除,把/test2020/date語(yǔ)句塊也刪除,把@hook刪除,MySQL的東西刪除,前端的東西也完全不考慮,就是最簡(jiǎn)單的bottle web服務(wù),相當(dāng)于hello world。
建議盡量懂上面的代碼,涉及了靜態(tài)資源,數(shù)據(jù)庫(kù),是web服務(wù)必須的內(nèi)容。
pip升級(jí)的坑
分享一個(gè)遇到的pip的問題,我Python版本很低2.6.6。本來通過安裝yum的epel,已經(jīng)成功安裝了好用的pip。但是每次我用pip命令,最下方都會(huì)提示升級(jí)
You?are?using?pip?version?9.0.3,?however?version?20.0.2?is?available.You?should?consider?upgrading?via?the?'pip?install?--upgrade?pip'?command我執(zhí)行了pip install --upgrade pip升級(jí),然后pip指令就不能用了。而且升級(jí)了之后,在想安裝回低版本的pip就沒有對(duì)應(yīng)的安裝包了。yum只能找到20.0.2版本的(老版本會(huì)被覆蓋難道?)。
http://bootstrap.pypa.io/2.6/get-pip.py??下載了get-pip.py也無法安裝成功。最后在上面的地址下載到了2.6版本的安裝文件,才成功安裝可以使用的pip。
總結(jié)
相比java,python開發(fā)web代碼量少,需要安裝的庫(kù)少,如果能滿足功能和性能要求,python可能是更好的選擇。
總結(jié)
以上是生活随笔為你收集整理的python web开发项目 源码_真零基础Python开发web的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 64位浮点数_JavaScript 浮点
- 下一篇: 设置为true有什么区别_海绵与珍珠棉有