Flask的简单使用
随便聊一聊Flask
首先简介一下,Flask是一款轻量级的以python为服务端的Web框架。
我这里倒是很喜欢这个框架,有以下几点原因:
- 是Python为服务器端的处理。【比起Java为后台的框架,使用和部署起来】
- 启动起来不需要部署服务器端,只要脚本能跑起来后台就起来了。
- 路由模式比较友好,每个路由都是一个方法,使用起来相当的方便。
当然除了这些优点之外,它的缺点也非常明显。
- 过于轻量化,如果项目太大的化,结果就是项目管理很混乱。【这一点需要很好的编码习惯才能避免,大型的框架,之所以不会乱是主要是因为如果你不按照它框架的写法,程序会跑不起来,导致你必须按照固定的格式去写从而会有很清晰的模块以及功能的管理】
这些都是我个人的观点,虽然有些片面,但也是真实的感受。
Flask快速使用
Flask的目录格式
Flask是以服务器的执行文件为基准的树状文件。
具体的格式如下所示:
根目录
| ---- Web_Run.py 【文件:名称不固定,为你执行服务器端的可执行的Python文件】
| ---- templates 【目录:用于存HTML的目录文件,默认的路径,应该可以修改,没试过】
| ---- static 【目录:用于存静态文件,随着浏览器第一次访问服务器就加载到浏览器中的文件,可以放各类js,css以及图片等信息,可以没有这个文件夹,也可以有这个文件夹,名称应该可以修改,并没有修改过】
其他的文件可以自行添加,添加前端的文件是指定的两个文件,添加后端则可自行添加。
实例代码(全)
话不多说,先上全部的代码。安装好依赖文件,补充html文件后,既可直接运行的代码,后续章节进行逐步的讲解。
from flask import Flask, request, render_template_string, render_template
from gevent import pywsgi
app = Flask(__name__)
@app.route("/", methods=['GET', 'POST'])
def get_index_main():
return render_template('login.html')
@app.route("/getHtml", methods=['POST']) # 得到某一个HTML请求
def get_html():
html = ""
if request.method == 'POST':
h = request.form.get("fileName") # 得到传过来的参数
html = render_template(h)
return render_template_string(str(html))
if __name__ == '__main__':
IP = '127.0.0.1'
port = 8088
server = pywsgi.WSGIServer((IP, port), app)
server.serve_forever() # 将一些信息打印到之中
这段代码是一个基础的例子,也大致能够满足基础的Web的运行了。
服务器的开启脚本
Flask是有官方例子的,然而,官方的例子运行起来回报一个<请不要在生产环境中使用>的提示> 对于我这个强迫症而言,就已经十分尴尬了!!!因此,本例中就使用了pywsgi库来解决了这个问题。
其中,Web需要访问的地址和端口号依次为IP何port两个变量,而运行的app则为Flask代码,具体的使用片段如下所示:
app = Flask(__name__) # Flask固定的声明方式
if __name__ == '__main__':
IP = '127.0.0.1' # 访问地址
port = 18088 # 对应的端口号
server = pywsgi.WSGIServer((IP, port), app) # 将Flask加载到pywsgi之中
server.serve_forever() # 启动服务器
处理Get请求和Post请求
对于Web服务而言,需要给前台提供访问的路径,对于提交的请求,后台服务器需要得到前台传输过来的参数,请求包含Get请求和Post请求,请求的内容,可能是字符串,文件或者数字等一系列类型的数据。【这里仅仅讲解对字符串的处理,提交文件的话,请自己去查官方文档】Flask的可以使用requert对象来接收请求。
具体的用法,请详见下面的代码:
@app.route("/", methods=['GET', 'POST'])
def get_index_main():
return render_template('login.html')
@app.route("/getHtml", methods=['POST']) # 得到某一个HTML请求
def get_html():
html = ""
if request.method == 'POST':
h = request.form.get("fileName") # 得到传过来的参数
html = render_template(h)
return render_template_string(str(html))
其他内容暂时不讲述,仅仅是简单地备忘而已,并非是API文档,后续可能会出API,但是暂时没有这个打算~