Flask快速开始

Posted 测开成长记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask快速开始相关的知识,希望对你有一定的参考价值。

一、自己搭建简单服务

from wsgiref.simple_server import make_server
def app(env,start_response):
#env获取请求相关数据
#状态码、header
start_response('200 OK',[('content_type','text/plain')])
print(env.get('PATH_INFO'))
return [b'hello']

server=make_server('',6001,app)
server.serve_forever()


WSGI即 Web 服务器网关接口,是webserver和application之间的一个桥梁,它规定了服务器怎么把请求信息告诉给应用,应用怎么把执行情况回传给服务器,这样的话,服务器与应用都按一个标准办事,只要实现了这个标准,服务器与应用随意搭配就可以,灵活度大大提高。


二、结构理解

这是最简单的结构,可以看到app=是初始化一个application,app.run()是运行服务器,底层其实也是开启一个wsgi服务。@app.route..是定义一个路由,下面的方法是这个路由要实现的功能。

app初始化可以自定义存放文件夹名称,run方法里可以指定host和port,还可以开启debug模式。开启的好处是:每次修改代码后保存即自动重启服务、出错后会直接在前端显示错误信息方便调试。这些还可以放在配置项里:app.config[‘debug’]=True

通过命令行方式运行:set FLASK_APP=xx.py

flask run


三、请求和响应

request:获取请求的相关数据

from flask import request
@app.route('/')
def hello_world():
args=request.args
print(args)
print(args.get('username'))
return 'Hello World!'

如果访问:http://127.0.0.1:5000/?username=yyy,在视图函数里打印request的参数,返回ImmutableMultiDict([('username', 'yyy')])。


响应可以直接返回字符串,或者返回一个render_template对象,这个是返回某个文件如hello.html,这个文件要遵循规则放在templates文件夹里。



四、配置项config

如果要部署给别人用,debug这个要关闭,port也要修改,就需要通过配置文件。不同的环境我们使用不同的配置文件。



五、路由

1、一个视图函数可以绑定多个url,只需要在函数上叠加装饰器route即可。

@app.route('/hello')
@app.route('/')
def hello_world():
args=request.args
print(args)
print(args.get('username'))
return render_template('hello.html')


2、自定义一个装饰器,必须放在@app.route里面,而且装饰器必须要return视图函数的返回结果,被包装成返回对象。

以上是关于Flask快速开始的主要内容,如果未能解决你的问题,请参考以下文章

flask---快速使用

c#代码片段快速构建代码

wtforms快速使用和源码分析(基于flask)

1.Flask介绍与环境

Flask 快速入门

前端开发工具vscode如何快速生成代码片段