升级Python全栈股票系统,使用vueadmin快速开发
头条创作挑战赛目录前言0,关于Python全栈股票系统2。0,github,5。8K星星1,Python全栈股票系统,更改使用elementUI开发2,使用vueelementadmin,进行开发3,解决pythontronado和vue跨域问题4,总结vue也很方便前言
使用Python开发一个web股票项目。
【github项目地址】:
https:github。compythonstockstock
【知乎专栏地址】:
https:zhuanlan。zhihu。compythonstock
【相关stock资料分类】:
http:blog。csdn。netfreewebsysarticlecategory7076584
主要使用开发语言是python。
使用的lib库是pandas,tushare,TensorFlow,tornado等。
项目之前使用的jQuery,dataTable进行股票数据展示,实现了动态table,现在是时候放弃jQuery了,修改成vue,开发股票系统展示分析界面,选择了vueelementadmin。
并展示了股票的相关数据字段,还是非常方便快速的。0,关于Python全栈股票系统2。0,github,5。8K星星有些同学可能不知道,项目地址:https:github。compythonstockstockPythonStockV2是基于Python的pandas,akshare,bokeh,tornado,stockstats,talib等框架开发的全栈股票系统。项目创建于2017年7月17日,每月不定期更新。1)可以直接使用docker直接本地部署运行,整个项目在dockerhub上压缩后200MB,本地占用500MB磁盘空间。2)使用Docker解决了Python库安装问题,使用Mariadb(MySQL)存储数据。借助akshare抓取数据。3)使用cron做定时任务,每天进行数据抓取计算,每天18点开始进行数据计算,计算当日数据,使用300天数据进行计算,大约需要15分钟计算完毕。4)股票数据接口防止被封,按天进行数据缓存,储存最近3天数据,每天定时清除,同时使用readpickletopickle的gzip压缩模式存储。5)使用tornado开发web系统,支持每日股票数据东财,龙虎榜个股上榜新浪,数据中心大宗交易行情等。6)数据展示系统,是通用数据展示系统,配置字典模板之后,页面自动加载数据,并完成数据展示,后续自己开发的指标数据可以加入进去。7)增加曲线数据分析,在查看股票中,可以直接跳转到东方财富页面查看相关信息,点击指标之后使用Bokeh将多达17个指标的数据绘图,进行图表展示。8)2。0最大的更新在于替换tushare库(因部分库不能使用),使用akshare进行数据抓取。
基础库版本1,pandas使用【1。3。5】版本,升级了2,numpy使用【1。21。5】版本,升级了3,akshare使用【1。3。50】版本,升级了4,bokeh使用【2。4。2】版本,升级了5,stockstats使用【0。3。2】版本1,Python全栈股票系统,更改使用elementUI开发
首先要修改界面,使用vueelementUI开发股票系统的界面。
终于要和jQuery说再见了,需要把动态表格的UI重新设计下。
最主要的数据展示使用的是dataTable组件进行开发的,很多接口都和dataTable强耦合。
那个也是JQuery时代,不错的报表展示。但是现在使用VUE应该也能很轻松的做了相关的数据展示。2,使用vueelementadmin,进行开发
https:github。comPanJiaChenvueelementadmin
项目使用文档:
https:panjiachen。github。iovueelementadminsitezhguide
还有作者的招聘广告呢,作者在字节工作:
为什么选择广告行业?
广告变现对于很多互联网公司来说是非常重要的变现方式,属于核心领域且发展持久,是全世界互联网公司最主流的收入来源,也成为顶尖人才的汇聚之地。前沿技术首先应用于广告行业,使其成为一个高投入高回报的领域。在这里你可以获得广阔的成长空间,大牛的辅导,实践应用科技行业的各类最新技术。
广告业务相比C端业务具有更高的业务壁垒,可以更好地积累自己的业务方向的竞争优势。后续职业生涯的发展,走技术专家路线能走出成绩走出深度的毕竟是少数,那么自己的竞争力如何构建?深入某个具有足够深度和壁垒的业务方向业务是个可行的方案。大流量(亿级),高并发,复杂系统架构设计,智能算法设计,复杂广告场景等,都可以施展技术提供用武之地。
直接使用模板创建git项目:
https:github。comPanJiaChenvueadmintemplate
但是几年前的项目,增加了依赖没有起来:ERRORFailedtocompilewith9errors23:03:47Thesedependencieswerenotfound:corejsmoduleses。array。push。jsin。nodemodulesbabelruntimehelpersesmregeneratorRuntime。js,。nodemodulescacheloaderdistcjs。js??ref120!。nodemodulesbabelloaderlib!。nodemodulescacheloaderdistcjs。js??ref00!。nodemodulesvueloaderlib??vueloaderoptions!。srccomponentsBreadcrumbindex。vue?vuetypescriptlangjsand3otherscorejsmoduleses。error。cause。jsin。nodemodulesbabelruntimehelpersesmregeneratorRuntime。js,。srcutilsrequest。jsand1othercorejsmoduleses。object。proto。jsin。nodemodulesbabelruntimehelpersesmregeneratorRuntime。jsToinstallthem,youcanrun:npminstallsavecorejsmoduleses。array。push。jscorejsmoduleses。error。cause。jscorejsmoduleses。object。proto。js
尝试了重新安装corejs成功了:rmyarn。lockrmrfnodemodulescorenpminstallcorejssave
原来只要升级下corejs版本就可以corejs:3。26。1,
然后admin界面就跑起来了。
然后开始学习代码,开发动态股票报表功能。
把这个数据展示页面修改成股票动态数据,这个界面和股票数据展示界面一致。
3,解决pythontronado和vue跨域问题
首先在python当中,需要配置baseControllerhead参数,其中origin要动态获得。基础handler,主要负责检查mysql的数据库链接,解决跨域CORS问题。classBaseHandler(tornado。web。RequestHandler):defsetdefaultheaders(self):headersself。request。headerslogging。info(head的类型:,type(headers))originheaders。get(origin,None)logging。info(BaseHandler)logging。info(origin)iforigin!Noneandorigin。find(localhost)0:self。setheader(AccessControlAllowCredentials,true)self。setheader(AccessControlAllowOrigin,origin)self。setheader(AccessControlAllowMethods,POST,GET,PUT,DELETE,OPTIONS)self。setheader(AccessControlAllowHeaders,xtoken,authorization,Authorization,ContentType,AccessControlAllowOrigin,AccessControlAllowHeaders,XRequestedBy,AccessControlAllowMethods)self。setheader(AccessControlExposeHeaders,CacheControl,ContentLanguage,ContentType,Expires,LastModified,Pragma)同时定义一个option方法defoptions(self):self。setstatus(204)self。finish()
同时前端也要修改配置:createanaxiosinstanceconstserviceaxios。create({baseURL:process。env。VUEAPPBASEAPI,urlbaseurlrequesturlwithCredentials:true,sendcookieswhencrossdomainrequeststimeout:5000requesttimeout})
然后修改分页的数据格式:
增加返回状态:{code:20000,message:success,draw:0,total:139907,recordsTotal:139907,recordsFiltered:139907,data:〔{code:000001,name:平安银行,latestprice:17,quotechange:2。35,upsdowns:0。41,volume:1502164,turnover:2561266416。。。。。。。}〕}
然后修改vue代码即可:eltable:keytableKeyvloadinglistLoading:datalistborderfithighlightcurrentrowstylewidth:100;sortchangesortChangeeltablecolumnlabel日期propdatewidth150pxaligncentertemplateslotscope{row}span{{row。date}}spantemplateeltablecolumneltablecolumnlabel代码propcodealigncenterwidth80templateslotscope{row}span{{row。code}}spantemplateeltablecolumn。。。。。。。。。。。。getList(){this。listLoadingtruefetchList(this。listQuery)。then(response{this。listresponse。datathis。totalresponse。totalJusttosimulatethetimeoftherequestsetTimeout((){this。listLoadingfalse},1。51000)})},4,总结vue也很方便
目前股票系统,迁移使用vue做界面,正在开发中。
只是把一个股票数据进行展示的,但是需要研究下动态表单的方法。之前是通过html页面循环属性的方式的。
这个需要再开发一个接口,返回要展示的属性。也不难。慢慢开发吧。