最近看到一个 Python 的轻量化的 web 框架 Flask,恰好我有一些做的东西需要做成 demo给别人看,就简单的做了一个例子,方便以后再用的时候参考。
Flask 简介
引用 Flask 官网的例子
# hello.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
运行一下:
$ python hello.py
Running on http://127.0.0.1:5000/
Flask 安装可以参考:http://docs.jinkan.org/docs/flask/quickstart.html#a-minimal-application
用来做 demo 的例子
这里一个demo,用户从网页上输入一句话,点击发送之后,返回这个字符串的倒序。以这个例子为基础,可以扩展出很多功能,比如聊天机器人、查询数据等等,只要改一下对输入的处理函数就可以了。
参考代码
目录结构
demo.py
templates/
-- index.html
demo.py
import os
from flask import Flask, request, render_template, Markup
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def demo():
if request.method == 'GET':
return render_template('index.html', input_text = '', res_text = '')
else:
inputText = request.form.get("input_text")
resText = Markup(formatRes(reverseText(inputText)))
return render_template('index.html', input_text = inputText, res_text = resText)
def formatRes(textList):
return '<p>' + '</p><p>'.join(textList) + '</p>'
# A sample
def reverseText(text):
res = []
res.append('Original text: %s' %(text))
res.append('Converted text: %s' %(''.join(reversed(list(text)))))
return res
if __name__ == '__main__':
app.run()
index.html
<html>
<style>
.query{font-size:20px}
.result{font-size:20px;margin:0 auto;line-height: 10px;}
</style>
<form method="post" action="/">
<table>
<td>
<p> 发送 </p>
</td>
<td>
<textarea type="text" class="query" name="input_text" id="input_text" value="" style="width:1000px;height:40px" onkeydown="if (event.keyCode == 13) { this.form.submit(); return false; }">{{input_text}}</textarea>
<input type="submit" for="input_text" value="提交">
</td>
</table>
<table>
<td>
<p> 返回 </p>
</td>
<td>
<div type="text" class="result" name="res_text" id="res_text" value="" style="width:1000px;height:500px;overflow-y:auto;border-style:solid; border-width:1px; border-color:#000">{{res_text}}</div>
</td>
</table>
<script>
var textarea = document.getElementById('res_text');
textarea.scrollTop = textarea.scrollHeight;
</script>
</form>
</html>