1

Django框架学习

 1 year ago
source link: https://zhanggq.github.io/post/zgq-paas-python-django/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

最新需要搞一套Python的股市趋势分析,朋友提供核心算法,我负责搭建整个架子。数据部分以前有写过现成的东西(Go写的),重新拿过来改成了Python版本。之后发现虽然数据可以成功分析,但只能通过敲命令行及看log方式进行分析,没有展示界面不太好分享,所以想到了用Django来搭一套Web平台练练手。

一、Mysql

之前的一篇帖子中写过,现在最简单的部分就是Mysql。通过下面的命令把我的Mysql容器起来就行,其他容器可以通过-h 127.0.0.1 -P13306访问。

二、Django

Django部分的源码都已经提交Github(其实也没多少代码),所以这里只讲心得体会。这次开发之前买了本书–《Django企业开发实战》,主要是时间关系,看了前3章就开始动手了。后来发现有些地方书中并没有讲清楚,导致我在admin和view关系上被误导了很久。

起初我以为admin只是用来搭建架子,所有的request消息都会经过view+form处理。但实际上不管我怎么修改view的代码,打断点,加日志,request消息都没法走到view。后来发现因为我的url.py里面的url(r’^admin/‘, admin.site.urls)是指所有http://xxxx/admin/的请求都会走到admin中,而只有http://xxxx/这样的请求才会经过url(r'^$', IndexView.as_view(), name=‘index’)走到view中,这两个是完全独立的,经过view的请求如果想长得和admin展示出来的一样,就得自己画界面。而《Django企业开发实战》很大一个问题就是没有给出截图,导致我理解错误。

这里展示一下我目前的django结构(和我Github上代码目录结构有一丢丢区别,问题不大)。

vRARi13.png

三、Docker封装

同上面的Github。因为在Linux环境上操作,python包的管理会很麻烦,我也不习惯用virtualenv创建虚拟环境,所以就直接用Docker进行了封装。整个工程如图所示:

edWv8EJ.png
  • build.sh是一个简单的打包脚本,把django代码打了一个压缩包,以及管理一下镜像的名字;
  • requirements.txt是python的依赖,没啥好说的;
  • Dockerfile是打镜像的脚本,首先会从网上pull一个python:3.6.0镜像,在其基础上加载了analize.sys.tar.gz代码包,并安装requirements.txt中的python依赖;

如果是第一次启动容器,则使用下面这个命令,进去后再执行建表等操作:

docker run --privileged -tid -e "container=docker" --restart=always -h analize --name=analize --net=host --stop-signal=RTMIN+3 analize-sys:latest
python ./analize_sys/manage.py makemigrations
python ./analize_sys/manage.py migrate
python ./analize_sys/manage.py createsuperuser
python ./analize_sys/manage.py runserver 0.0.0.0:8000

或者建表完成后直接用这个命令启动容器

docker run --privileged -tid -e "container=docker" --restart=always -h analize --name=analize --net=host --stop-signal=RTMIN+3 analize-sys:latest python ./analize_sys/manage.py runserver 0.0.0.0:8000

四、项目展示

首页进去后会看到一个“分析任务”和“分析结果”。在“分析任务”添加想要分析的股票代码或者选择已经做过处理的.csv表格数据,然后该任务会被置为“待分析”状态。“分析结果”列表中会看到经过算法处理后的结果,在某个时间段内,预测了多少次,其中多少次预测正确什么的。

Q74OvDi.png

LUyWmoH.png

tXtGkll.png

当然,这个项目我不会把算法等核心代码提交,Github上只能看到页面相关的代码(所以一开始就说了没多少代码)。如何获取数据以及如何分析数据的代码是不会展示的。

五、Django项目演进

我目前所写的Django代码如果不是前面走了弯路,差不多一天时间就能写出来。当然这只是一个非常雏形的或者说原始的东西。如果要对这个项目进行改造,继续在admin.py上改肯定是不现实或者没有学习意义的。所以思考了一下该项目的演进方向:

  1. 从默认的admin演进到xadmin(Django2.0版本)。xadmin是一个很强大的框架,在admin基础上做了很多改进,但该框架的核心还是MVC架构,另外就是xadmin及xadmin2已经停止维护了,目前对Django2的支持也不是很好,所以虽然该方案改造成本最低,但其生命周期非常有限。

  2. 从默认的admin演进到xadmin3.0。xadmin3.0使用React和Redux套餐,其核心思想已经变成了前后端分离,所以后端django部分需要django-rest-framework生成RESTful API用于对接xadmin。但该项目似乎还在孵化阶段,另一个问题是React和Vue一样,需要学习成本,然后也自己画前端。

  3. 从默认的admin演进到vue。和上面的一样,需要django-rest-framework,需要学习vue,需要自己找vue前端框架,需要自己画前端。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK