|
一直在寻思着做一个类似于weka的强大的机器学习工作,与weka不同的地方是,它比较泛,而我想针对我们生物信息学中常见的不平衡分类,多标签,层次多标签,PCA降维,格式转换等实用的问题来做,而且要有一个易用美观的图形界面,并且后期易于维护,易于拓展更多功能。
看了weka写GUI和python写GUI的代码,觉得代码量很多,后期维护肯定困难。于是,我想到直接将它做成python网站,既可以部署到服务器上给用户访问,在本地一键安装flask环境后即可双击运行网站,相比java网站需要部署tomcat设置环境变量要好很多。此外,由于本地不限制文件处理的大小,体验应该是很好的。还有就是UI设计与交互,技术非常多,选型更加多元化。最后,最关键的一点是,flask写网站非常简单迅速,代码量非常少,日后维护起来也方便。
1. 安装Flask
安装Flask非常简单。若已安装好python环境,那么只需在windows终端或linux终端运行:
保证电脑已经联网,稍等两分钟就安装好了。
2. 使用示例
直接贴代码,我写有精炼的注释。就这么十几行,包含了获取前台粘贴内容、上传文件内容、显示键值对结果的方法。
2.1 后台的hello.py:
- # coding=utf-8
- from flask import Flask, request
- from flask import render_template
- app = Flask(__name__)
- # 默认路由,http://your_ip_address/
- @app.route('/')
- def index():
- return render_template('hello.html')
- # 前台写的粘贴文件方法,POST传输
- @app.route('/paste', methods=['GET', 'POST'])
- def paste_method():
- if request.method == 'POST':
- paste = request.form['paste']
- return render_template('hello.html', name={'1': '2'}, paste=paste)
- return render_template('hello.html')
- # 前台写的上传文件方法,POST传输;上传后文件写入file.txt文件
- @app.route('/upload', methods=['GET', 'POST'])
- def upload_method():
- if request.method == 'POST':
- upload = request.files['files']
- upload.save('file.txt')
- return render_template('hello.html', name={'1': '2'}, paste=u"上传成功")
- return render_template('hello.html')
- # 默认写法
- if __name__ == '__main__':
- app.run()
复制代码
2.2 前台的hello.html:
- <!doctype html>
- <title>Hello from Flask</title>
- <!--<form action="paste" method="post" enctype="multipart/form-data">
- <textarea name="paste" rows="3" cols="20">
- 这里放用户粘贴的内容,例如蛋白质
- </textarea>
- <button type="submit">submit</button>
- </form>-->
- <form action="upload" method="post" enctype="multipart/form-data">
- <input type="file" name="files">
- <button type="submit">submit</button>
- </form>
- <!-- 前台的判断语法,若后台有name值传入,则显示相应内容,包括键值对类型;否则只显示Hello World! -->
- {% if name %}
- <h1>{{ paste }}</h1>
- {% for key in name %}
- <li><a href="">{{ key }}, {{ name[key] }}</a></li>
- {% endfor %}
- {% else %}
- <h1>Hello World!</h1>
- {% endif %}
复制代码
以上文件结构截图如下:
运行hello.py,网站就启动了。当然,在本地测试时这样足够了。如果要部署到服务器上,就可以用更专业的容器,Nginx这种,框架flask不变。
Flask教程地址:http://docs.jinkan.org/docs/flask/quickstart.html#quickstart
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|