电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python Web項目Cherrypy使用方法鏡像

瀏覽:3日期:2022-07-06 11:07:27

1、介紹

搭建Java Web項目,需要Tomcat服務器才能進行。而搭建Python Web項目,因為cherrypy自帶服務器,所以只需要下載該模塊就能進行Web項目開發。

2、最基本用法

實現功能:訪問html頁面,點擊按鈕后接收后臺py返回的值

html頁面(test_cherry.html)

<!DOCTYPE html><html><head> <meta charset='utf-8'> <title>Test Cherry</title> <script src='https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js'></script></head><body> <h1>Test Cherry</h1> <p id='p1'></p> <button type='button' onclick='callHelloWorld()'>hello_world</button> <script> function callHelloWorld() { $.get(’/hello_world’, function (data, status) {alert(’data:’ + data)alert(’status:’ + status) }) } </script></body></html>

編寫腳本py

# -*- encoding=utf-8 -*-import cherrypyclass TestCherry(): @cherrypy.expose() # 保證html能請求到該函數 def hello_world(self): print(’Hello’) return ’Hello World’ @cherrypy.expose() # 保證html能請求到該函數http://127.0.0.1:8080/index def index(self): # 默認頁為test_cherry.html return open(u’test_cherry.html’)cherrypy.quickstart(TestCherry(), ’/’)

運行結果

[27/May/2020:09:04:42] ENGINE Listening for SIGTERM.[27/May/2020:09:04:42] ENGINE Bus STARTINGCherryPy Checker:The Application mounted at ’’ has an empty config.

[27/May/2020:09:04:42] ENGINE Set handler for console events.[27/May/2020:09:04:42] ENGINE Started monitor thread ’Autoreloader’.[27/May/2020:09:04:42] ENGINE Serving on http://127.0.0.1:8080[27/May/2020:09:04:42] ENGINE Bus STARTED

能看到啟動的路徑為127.0.0.1::8080端口號是8080

The Application mounted at ’’ has an empty config.表示沒有自己配置,使用默認配置,如果需要可自己配置

運行py腳本后,打開瀏覽器輸入http://127.0.0.1:8080/或者http://127.0.0.1:8080/index就可以看到test_cheery.html

Python Web項目Cherrypy使用方法鏡像

點擊hello_world按鈕,就會訪問py中的hello_world函數

Python Web項目Cherrypy使用方法鏡像

解釋:test_cherry.html中

function callHelloWorld() {

$.get(’/hello_world’, function (data, status) {

alert(’data:’ + data)

alert(’status:’ + status)

})}

1)請求/hello_world需要與py中的函數名一致

2)默認端口是8080,如果8080被占用,可以重新配置

cherrypy.quickstart(TestCherry(), ’/’)可以接收配置參數

若多次調試出現portend.Timeout: Port 8080 not free on 127.0.0.1.錯誤

是因為8080端口被占用了,如果你第一次調試時成功了,則你可以打開任務管理器把python進程停掉,8080就被釋放了

3、導入webbrowser進行調試開發(可以自動打開瀏覽器,輸入網址)

py代碼

# -*- encoding=utf-8 -*-import cherrypyimport webbrowserclass TestCherry(): @cherrypy.expose() # 保證html能請求到該函數 def hello_world(self): print(’Hello’) return ’Hello World’ @cherrypy.expose() # 保證html能請求到該函數http://127.0.0.1:8080/index def index(self): # 默認頁為test_cherry.html return open(u’test_cherry.html’)def auto_open(): webbrowser.open(’http://127.0.0.1:8080/’)cherrypy.engine.subscribe(’start’, auto_open) #啟動前每次都調用auto_open函數cherrypy.quickstart(TestCherry(), ’/’)

這樣運行py就能自動打開網頁了,每次改變html代碼如果沒達到預期效果,可以試一試清理瀏覽器緩存!!!

4、帶參數的請求

實現傳入參數并接收返回顯示在html上

py中添加一個函數(get_parameters)

# -*- encoding=utf-8 -*-import cherrypyimport webbrowserclass TestCherry(): @cherrypy.expose() # 保證html能請求到該函數 def hello_world(self): print(’Hello’) return ’Hello World’ @cherrypy.expose() # 保證html能請求到該函數http://127.0.0.1:8080/index def index(self): # 默認頁為test_cherry.html return open(u’test_cherry.html’) @cherrypy.expose() def get_parameters(self, name, age, **kwargs): print(’name:{}’.format(name)) print(’age:{}’.format(age)) print(’kwargs:{}’.format(kwargs)) return ’Get parameters success’def auto_open(): webbrowser.open(’http://127.0.0.1:8080/’)cherrypy.engine.subscribe(’start’, auto_open) # 啟動前每次都調用auto_open函數cherrypy.quickstart(TestCherry(), ’/’)

html中添加一個新按鈕和對應按鈕事件

<!DOCTYPE html><html><head> <meta charset='utf-8'> <title>Test Cherry</title> <script src='https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js'></script></head><body> <h1>Test Cherry</h1> <p id='p1'></p> <button type='button' onclick='callHelloWorld()'>hello_world</button> <button type='button' id='postForParameters'>get_parameters</button> <p id='getReturn'></p> <script> function callHelloWorld() { $.get(’/hello_world’, function (data, status) {alert(’data:’ + data)alert(’status:’ + status) }) } $(document).ready(function () { $(’#postForParameters’).click(function () {alert(’pst’)$.post(’/get_parameters’, { name: ’TXT’, age: 99, other: ’123456’ }, function (data, status) { if (status === ’success’) { $(’#getReturn’).text(data) } }) }) }) </script></body></html>

運行結果

點擊get_parameters按鈕后

D:Python37_32python.exe D:/B_CODE/Python/WebDemo/test_cherry.py[27/May/2020:09:58:40] ENGINE Listening for SIGTERM.[27/May/2020:09:58:40] ENGINE Bus STARTINGCherryPy Checker:The Application mounted at ’’ has an empty config.

[27/May/2020:09:58:40] ENGINE Set handler for console events.[27/May/2020:09:58:40] ENGINE Started monitor thread ’Autoreloader’.[27/May/2020:09:58:41] ENGINE Serving on http://127.0.0.1:8080[27/May/2020:09:58:41] ENGINE Bus STARTED127.0.0.1 - - [27/May/2020:09:58:41] 'GET / HTTP/1.1' 200 1107 '' 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'127.0.0.1 - - [27/May/2020:09:59:37] 'GET / HTTP/1.1' 200 1136 '' 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'127.0.0.1 - - [27/May/2020:09:59:37] 'GET /favicon.ico HTTP/1.1' 200 1406 'http://127.0.0.1:8080/' 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'127.0.0.1 - - [27/May/2020:10:02:50] 'GET / HTTP/1.1' 200 1208 '' 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'127.0.0.1 - - [27/May/2020:10:02:50] 'GET /favicon.ico HTTP/1.1' 200 1406 'http://127.0.0.1:8080/' 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'name:TXTage:99kwargs:{’other’: ’123456’}127.0.0.1 - - [27/May/2020:10:02:54] 'POST /get_parameters HTTP/1.1' 200 22 'http://127.0.0.1:8080/' 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'

能看出傳入的參數已經打印出來了

Python Web項目Cherrypy使用方法鏡像

5、config配置以及對應url(追加,所以代碼不同了)

# -*- encoding=utf-8 -*-import jsonimport osimport webbrowserimport cherrypyclass Service(object): def __init__(self, port): self.media_folder = os.path.abspath(os.path.join(os.getcwd(), ’media’)) self.host = ’0.0.0.0’ self.port = int(port) self.index_html = ’index.html’ pass @cherrypy.expose() def index(self): return open(os.path.join(self.media_folder, self.index_html), ’rb’) def auto_open(self): webbrowser.open(’http://127.0.0.1:{}/’.format(self.port)) @cherrypy.expose() def return_info(self, sn): cherrypy.response.headers[’Content-Type’] = ’application/json’ cherrypy.response.headers[’Access-Control-Allow-Origin’] = ’*’ my_dict = {’aaa’:’123’}# 或者用list[]可保證有序 return json.dumps(my_dict).encode(’utf-8’)def main(): service = Service(8090) conf = { ’global’: { # 主機0.0.0.0表示可以使用本機IP訪問,如http://10.190.20.72:8090,可部署給別人訪問 # 否則只可以用http://127.0.0.1:8090 ’server.socket_host’: service.host, # 端口號 ’server.socket_port’: service.port, # 當代碼變動時,是否自動重啟服務,True==是,False==否 # 設為True時,當該PY代碼改變,服務會重啟 ’engine.autoreload.on’: False }, # 根目錄設置 ’/’: { ’tools.staticdir.on’: True, ’tools.staticdir.dir’: service.media_folder }, ’/static’: { ’tools.staticdir.on’: True, # 可以這么訪問http://127.0.0.1:8090/static加上你的資源,例如 # http://127.0.0.1:8090/static/js/jquery-1.11.3.min.js ’tools.staticdir.dir’: service.media_folder }, } # 可以使用該種寫法代替config配置 # cherrypy.config.update( # {’server.socket_port’: service.port}) # cherrypy.config.update( # {’server.thread_pool’: int(service.thread_pool_count)}) # 當代碼變動時,是否重啟服務,True==是,False==否 # cherrypy.config.update({’engine.autoreload.on’: False}) # 支持http://10.190.20.72:8080/形式 # cherrypy.server.socket_host = ’0.0.0.0’ # 啟動時調用函數 cherrypy.engine.subscribe(’start’, service.auto_open) cherrypy.quickstart(service, ’/’, conf)if __name__ == ’__main__’: pass main()

工程文件夾

Python Web項目Cherrypy使用方法鏡像

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 骨密度仪-骨密度测定仪-超声骨密度仪-骨龄测定仪-天津开发区圣鸿医疗器械有限公司 | 压接机|高精度压接机|手动压接机|昆明可耐特科技有限公司[官网] 胶泥瓷砖胶,轻质粉刷石膏,嵌缝石膏厂家,腻子粉批发,永康家德兴,永康市家德兴建材厂 | 管形母线,全绝缘铜管母线厂家-山东佰特电气科技有限公司 | 复合土工膜厂家|hdpe防渗土工膜|复合防渗土工布|玻璃纤维|双向塑料土工格栅-安徽路建新材料有限公司 | 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | 压力变送器-上海武锐自动化设备有限公司 | 铝镁锰板_铝镁锰合金板_铝镁锰板厂家_铝镁锰金属屋面板_安徽建科 | 贵阳用友软件,贵州财务软件,贵阳ERP软件_贵州优智信息技术有限公司 | 民用音响-拉杆音响-家用音响-ktv专用音响-万昌科技 | 上海佳武自动化科技有限公司 | 许昌奥仕达自动化设备有限公司 | 清水-铝合金-建筑模板厂家-木模板价格-铝模板生产「五棵松」品牌 | 丝杆升降机-不锈钢丝杆升降机-非标定制丝杆升降机厂家-山东鑫光减速机有限公司 | DWS物流设备_扫码称重量方一体机_快递包裹分拣机_广东高臻智能装备有限公司 | 讲师宝经纪-专业培训机构师资供应商_培训机构找讲师、培训师、讲师经纪就上讲师宝经纪 | 新型锤式破碎机_新型圆锥式_新型颚式破碎机_反击式打沙机_锤式制砂机_青州建源机械 | 宽带办理,电信宽带,移动宽带,联通宽带,电信宽带办理,移动宽带办理,联通宽带办理 | nalgene洗瓶,nalgene量筒,nalgene窄口瓶,nalgene放水口大瓶,浙江省nalgene代理-杭州雷琪实验器材有限公司 | 数年网路-免费在线工具您的在线工具箱-shuyear.com | 防渗膜厂家|养殖防渗膜|水产养殖防渗膜-泰安佳路通工程材料有限公司 | 贵州自考_贵州自学考试网 | 胶泥瓷砖胶,轻质粉刷石膏,嵌缝石膏厂家,腻子粉批发,永康家德兴,永康市家德兴建材厂 | 风电变桨伺服驱动器-风电偏航变桨系统-深圳众城卓越科技有限公司 | NMRV减速机|铝合金减速机|蜗轮蜗杆减速机|NMRV减速机厂家-东莞市台机减速机有限公司 | 新疆十佳旅行社_新疆旅游报价_新疆自驾跟团游-新疆中西部国际旅行社 | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | 间苯二酚,间苯二酚厂家-淄博双和化工 | 加热制冷恒温循环器-加热制冷循环油浴-杭州庚雨仪器有限公司 | 美的商用净水器_美的直饮机_一级代理经销商_Midea租赁价格-厂家反渗透滤芯-直饮水批发品牌售后 | 成都思迪机电技术研究所-四川成都思迪编码器 | 旋片真空泵_真空泵_水环真空泵_真空机组-深圳恒才机电设备有限公司 | 【直乐】河北石家庄脊柱侧弯医院_治疗椎间盘突出哪家医院好_骨科脊柱外科专业医院_治疗抽动症/关节病骨伤权威医院|排行-直乐矫形中医医院 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 水篦子|雨篦子|镀锌格栅雨水篦子|不锈钢排水篦子|地下车库水箅子—安平县云航丝网制品厂 | 安徽控制器-合肥船用空调控制器-合肥家电控制器-合肥迅驰电子厂 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | 气动隔膜泵厂家-温州永嘉定远泵阀有限公司 | 泰兴市热钻机械有限公司-热熔钻孔机-数控热熔钻-热熔钻孔攻牙一体机 | 冷却塔减速机器_冷却塔皮带箱维修厂家_凉水塔风机电机更换-广东康明冷却塔厂家 | 铝扣板-铝方通-铝格栅-铝条扣板-铝单板幕墙-佳得利吊顶天花厂家 elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 无线遥控更衣吊篮_IC卡更衣吊篮_电动更衣吊篮配件_煤矿更衣吊篮-力得电子 | 考勤系统_考勤管理系统_网络考勤软件_政企|集团|工厂复杂考勤工时统计排班管理系统_天时考勤 |