一. Flask 的安装
大家在开发python脚本的时候,需要安装一个比较顺手的IDE,这里推荐使用Pycharm,这个工具自动补全和一些依赖检测比较方便。安装好Pycharm后,打开Terminal:
1.使用命令pip install -U flask

2.验证flask安装是否成功
新建一个py文件,导入flask模块,这里如果没有报错,证明flask模块已经安装成功。

二. Flask的使用
首先,要使用flask,需要在py脚本的同级目录新建templates和static目录,templates目录用来存放要展示的html文件;而static目录是用来存放静态文件(static files)的,在通常的 web 项目下,静态文件指的是内容不需要动态生成的文件。比如图片、CSS 文件和 JavaScript 脚本等,如果只是简单的web界面可以不适用静态文件。
在创建好目录之后,我们来先创建py脚本:
from flaskimport Flask, render_template, request
app = Flask(__name__)
@app.route('/')
def hello_world():
return render_template('base.html')
@app.route('/build/')
def build():
return render_template('build.html')
@app.route("/build/create", methods=['post'])
def buildRange():
begin_ghc = request.values.get('begin_ghc')
return 'Get the begin_ghc info' + begin_ghc
if __name__ =='__main__':
app.run()
下面是分段解释:
from flask import Flask, render_template, request
app = Flask(__name__)
导入flask包,同时完成Flask的实例化。
@app.route('/')
def hello_world():
return render_template('base.html')
@app.route('/')使用装饰器完成 “/”和处理函数hello_world的映射,这样在访问根目录的时候就会跳转到hello_world函数,然后处理。render_template('base.html'),是加载base.html文件,这个地方要注意该文件必须在templates目录下面存在,否则会报错。
if __name__ =='__main__':
app.run()
在直接调用py脚本的时候,启动flask服务端。
接下来我们看一下base.html的实现:
<html>
<body>
<p>
<a href="http://ipadderss:5000/build/" >Range Build</a>
</p>
</body>
</html>
这个html是实现了一个超链接,跳转到‘/build’的处理。
接下来是build.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Build Range</title>
</head>
<body>
<form action="/build/create" method="post">
<p>begin_ghc: <input type="text" name="begin_ghc"></p>
<input type="submit">
</form>
</body>
</html>
<form action="/build/create" method="post">是如果点击了submit按钮,会向“/build/create”发送一个post请求。
<p>begin_ghc: <input type="text" name="begin_ghc"></p>是一个输入框
这也就是说,在用户填写完begin_ghc的文本框之后,点击提交,就会将请求转到buildRange()函数处理。
@app.route("/build/create", methods=['post'])
def buildRange():
begin_ghc = request.values.get('begin_ghc')
return 'Get the begin_ghc info' + begin_ghc
如果你想获取用户begin_ghc文本框的内容,可以使用request.values.get('begin_ghc')来获取,begin_ghc替换为要获取的文本框的名字,这样就可以获取用户输入了。
如果运行的时候会有如下报错:
AssertionError: View function mapping is overwriting an existing endpoint function: xxxx
需要检查一下是否有函数重名了,导致映射的时候报错。
网友评论