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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python Web項(xiàng)目Cherrypy使用方法鏡像

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

1、介紹

搭建Java Web項(xiàng)目,需要Tomcat服務(wù)器才能進(jìn)行。而搭建Python Web項(xiàng)目,因?yàn)閏herrypy自帶服務(wù)器,所以只需要下載該模塊就能進(jìn)行Web項(xiàng)目開(kāi)發(fā)。

2、最基本用法

實(shí)現(xiàn)功能:訪問(wèn)html頁(yè)面,點(diǎn)擊按鈕后接收后臺(tái)py返回的值

html頁(yè)面(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能請(qǐng)求到該函數(shù) def hello_world(self): print(’Hello’) return ’Hello World’ @cherrypy.expose() # 保證html能請(qǐng)求到該函數(shù)http://127.0.0.1:8080/index def index(self): # 默認(rèn)頁(yè)為test_cherry.html return open(u’test_cherry.html’)cherrypy.quickstart(TestCherry(), ’/’)

運(yùn)行結(jié)果

[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

能看到啟動(dòng)的路徑為127.0.0.1::8080端口號(hào)是8080

The Application mounted at ’’ has an empty config.表示沒(méi)有自己配置,使用默認(rèn)配置,如果需要可自己配置

運(yùn)行py腳本后,打開(kāi)瀏覽器輸入http://127.0.0.1:8080/或者h(yuǎn)ttp://127.0.0.1:8080/index就可以看到test_cheery.html

Python Web項(xiàng)目Cherrypy使用方法鏡像

點(diǎn)擊hello_world按鈕,就會(huì)訪問(wèn)py中的hello_world函數(shù)

Python Web項(xiàng)目Cherrypy使用方法鏡像

解釋:test_cherry.html中

function callHelloWorld() {

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

alert(’data:’ + data)

alert(’status:’ + status)

})}

1)請(qǐng)求/hello_world需要與py中的函數(shù)名一致

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

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

若多次調(diào)試出現(xiàn)portend.Timeout: Port 8080 not free on 127.0.0.1.錯(cuò)誤

是因?yàn)?080端口被占用了,如果你第一次調(diào)試時(shí)成功了,則你可以打開(kāi)任務(wù)管理器把python進(jìn)程停掉,8080就被釋放了

3、導(dǎo)入webbrowser進(jìn)行調(diào)試開(kāi)發(fā)(可以自動(dòng)打開(kāi)瀏覽器,輸入網(wǎng)址)

py代碼

# -*- encoding=utf-8 -*-import cherrypyimport webbrowserclass TestCherry(): @cherrypy.expose() # 保證html能請(qǐng)求到該函數(shù) def hello_world(self): print(’Hello’) return ’Hello World’ @cherrypy.expose() # 保證html能請(qǐng)求到該函數(shù)http://127.0.0.1:8080/index def index(self): # 默認(rèn)頁(yè)為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) #啟動(dòng)前每次都調(diào)用auto_open函數(shù)cherrypy.quickstart(TestCherry(), ’/’)

這樣運(yùn)行py就能自動(dòng)打開(kāi)網(wǎng)頁(yè)了,每次改變html代碼如果沒(méi)達(dá)到預(yù)期效果,可以試一試清理瀏覽器緩存!!!

4、帶參數(shù)的請(qǐng)求

實(shí)現(xiàn)傳入?yún)?shù)并接收返回顯示在html上

py中添加一個(gè)函數(shù)(get_parameters)

# -*- encoding=utf-8 -*-import cherrypyimport webbrowserclass TestCherry(): @cherrypy.expose() # 保證html能請(qǐng)求到該函數(shù) def hello_world(self): print(’Hello’) return ’Hello World’ @cherrypy.expose() # 保證html能請(qǐng)求到該函數(shù)http://127.0.0.1:8080/index def index(self): # 默認(rèn)頁(yè)為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) # 啟動(dòng)前每次都調(diào)用auto_open函數(shù)cherrypy.quickstart(TestCherry(), ’/’)

html中添加一個(gè)新按鈕和對(duì)應(yīng)按鈕事件

<!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>

運(yùn)行結(jié)果

點(diǎn)擊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'

能看出傳入的參數(shù)已經(jīng)打印出來(lái)了

Python Web項(xiàng)目Cherrypy使用方法鏡像

5、config配置以及對(duì)應(yīng)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’: { # 主機(jī)0.0.0.0表示可以使用本機(jī)IP訪問(wèn),如http://10.190.20.72:8090,可部署給別人訪問(wèn) # 否則只可以用http://127.0.0.1:8090 ’server.socket_host’: service.host, # 端口號(hào) ’server.socket_port’: service.port, # 當(dāng)代碼變動(dòng)時(shí),是否自動(dòng)重啟服務(wù),True==是,F(xiàn)alse==否 # 設(shè)為True時(shí),當(dāng)該P(yáng)Y代碼改變,服務(wù)會(huì)重啟 ’engine.autoreload.on’: False }, # 根目錄設(shè)置 ’/’: { ’tools.staticdir.on’: True, ’tools.staticdir.dir’: service.media_folder }, ’/static’: { ’tools.staticdir.on’: True, # 可以這么訪問(wèn)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)}) # 當(dāng)代碼變動(dòng)時(shí),是否重啟服務(wù),True==是,F(xiàn)alse==否 # cherrypy.config.update({’engine.autoreload.on’: False}) # 支持http://10.190.20.72:8080/形式 # cherrypy.server.socket_host = ’0.0.0.0’ # 啟動(dòng)時(shí)調(diào)用函數(shù) cherrypy.engine.subscribe(’start’, service.auto_open) cherrypy.quickstart(service, ’/’, conf)if __name__ == ’__main__’: pass main()

工程文件夾

Python Web項(xiàng)目Cherrypy使用方法鏡像

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 辊道窑炉,辊道窑炉厂家-山东艾希尔| 常州企业采购平台_常州MRO采购公司_常州米孚机电设备有限公司 | 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 自进式锚杆-自钻式中空注浆锚杆-洛阳恒诺锚固锚杆生产厂家 | 北京自然绿环境科技发展有限公司专业生产【洗车机_加油站洗车机-全自动洗车机】 | 深圳宣传片制作_产品视频制作_深圳3D动画制作公司_深圳短视频拍摄-深圳市西典映画传媒有限公司 | crm客户关系管理系统,销售管理系统,crm系统,在线crm,移动crm系统 - 爱客crm | 浙江工业冷却塔-菱电冷却塔厂家 - 浙江菱电冷却设备有限公司 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 郑州大巴车出租|中巴车租赁|旅游大巴租车|包车|郑州旅游大巴车租赁有限公司 | 超细|超微气流粉碎机|气流磨|气流分级机|粉体改性机|磨粉机|粉碎设备-山东埃尔派粉体科技 | 雾度仪_雾度计_透光率雾度仪价格-三恩时(3nh)光电雾度仪厂家 | MTK核心板|MTK开发板|MTK模块|4G核心板|4G模块|5G核心板|5G模块|安卓核心板|安卓模块|高通核心板-深圳市新移科技有限公司 | 瑞典Blueair空气净化器租赁服务中心-专注新装修办公室除醛去异味服务! | 洛阳永磁工业大吊扇研发生产-工厂通风降温解决方案提供商-中实洛阳环境科技有限公司 | TPE_TPE热塑性弹性体_TPE原料价格_TPE材料厂家-惠州市中塑王塑胶制品公司- 中塑王塑胶制品有限公司 | 广域铭岛Geega(际嘉)工业互联网平台-以数字科技引领行业跃迁 | 螺钉式热电偶_便携式温度传感器_压簧式热电偶|无锡联泰仪表有限公司|首页 | 半自动预灌装机,卡式瓶灌装机,注射器灌装机,给药器灌装机,大输液灌装机,西林瓶灌装机-长沙一星制药机械有限公司 | 恒温振荡混匀器-微孔板振荡器厂家-多管涡旋混匀器厂家-合肥艾本森(www.17world.net) | 陶瓷砂磨机,盘式砂磨机,棒销式砂磨机-无锡市少宏粉体科技有限公司 | 电镀电源整流器_高频电解电源_单脉双脉冲电源 - 东阳市旭东电子科技 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 柔软云母板-硬质-水位计云母片组件-首页-武汉长丰云母绝缘材料有限公司 | 浙江寺庙设计-杭州寺院设计-宁波寺庙规划_汉匠| 气动机械手-搬运机械手-气动助力机械手-山东精瑞自动化设备有限公司 | 全自动烧卖机厂家_饺子机_烧麦机价格_小笼汤包机_宁波江北阜欣食品机械有限公司 | 油漆辅料厂家_阴阳脚线_艺术漆厂家_内外墙涂料施工_乳胶漆专用防霉腻子粉_轻质粉刷石膏-魔法涂涂 | 高通量组织研磨仪-多样品组织研磨仪-全自动组织研磨仪-研磨者科技(广州)有限公司 | 361°官方网站| 精密机械零件加工_CNC加工_精密加工_数控车床加工_精密机械加工_机械零部件加工厂 | 地埋式垃圾站厂家【佳星环保】小区压缩垃圾中转站转运站 | 北京网络营销推广_百度SEO搜索引擎优化公司_网站排名优化_谷歌SEO - 北京卓立海创信息技术有限公司 | 短信营销平台_短信群发平台_106短信发送平台-河南路尚 | 爱德华真空泵油/罗茨泵维修,爱发科-比其尔产品供应东莞/杭州/上海等全国各地 | 动环监控_机房环境监控_DCIM_机房漏水检测-斯特纽 | 华中线缆有限公司-电缆厂|电缆厂家|电线电缆厂家 | 济南铝方通-济南铝方通价格-济南方通厂家-山东鲁方通建材有限公司 | 科箭WMS仓库管理软件-TMS物流管理系统-科箭SaaS云服务 | 智能终端_RTU_dcm_北斗星空自动化科技|