flask学习笔记

学前准备

安装好Python环境,pycharm。

Flask基础知识

  • python后端有两个主流框架,Flask轻量级框架、Django 重型,继承了很多东西。
    Flask是一个基于MVC设计模式的web后端框架
    MVC:

  • M Model 数据模型

  • V View 界面

  • C Controller 控制层
    MTV:

  • M: Models 模型(数据)

  • T: Templates 模板(界面)

  • V: View 视图(控制器)

Flask依赖三个库
Jinja2 模板引擎{% %} 模板:静态html+模板语言{% %}
Werkzeug WSGI 工具集

Flask流行的主要原因:

  1. 有非常齐全的官方文档,上手非常方便
  2. 有非常好的扩展机制和第三方扩展环境,工作中常见的软件都会有对应的扩展。自己动手实现扩展也很容易。
  3. 社区活跃度非常高
  4. 微型框架的形式给了开发者更大的选择空间

安装的时候去搜一下,应该是先创建一个虚拟环境,然后在虚拟环境中pip install Flask。为什么要创建虚拟环境?因为一台服务器上可能部署多个项目,每个项目需要的环境不一样,不能使用统一的一个环境。

//安装虚拟环境(windows操作系统)
pip install virtualenv virtualenvwrapper-win
//查看虚拟环境
workon
//mkvirtualenv 删除虚拟环境
rmvirtualenv flask2env
//进入虚拟环境
workon flask2env

启动文件最好叫app.py。

if __name__ == '__main__':
    # 运行启动web服务,持续监听用户端发起的请求
    app.run()
//run()启动的时候还可以添加参数:
//	debug 是否开启调试模式,开启后修改过python代码会自动重启
//	port启动指定服务器的端口号,默认是5000
//	host主机,默认是12.0.0.1,指定为0.0.0.0代表本机所有ip

模板渲染

@app.route('/index')
def index():
    #模板渲染
    return render_template('index.html',name='法外狂徒')

返回JSON数据

@app.route('/index')
def index():
    #模板渲染
    #return render_template('index.html',name='法外狂徒')
    #JSON
    #jsonify:序列化
    return json.dumps({'name':'张三','age':33},ensure_ascii=False)

路由参数

路由:讲从客户端发送过来的请求分发到指定函数上
路由通过装饰器对应视图函数,并且可以接收参数,所以我们只需要在视图函数上使用装饰器即可

#路由参数
#       string      接收任何没有斜杠('/')的文件(默认)
#       int         接收整型
#       float       接收浮点型
#       path        接收路径,可接收斜线('/')
#       uuid        只接收uuid字符串,唯一码,一种生成规则
#       any         可以同时指定多种路径,进行限定

#string
@app.route('/string/<string:name>')
def get_string(name):
    print(name)
    return 'string'

#int
@app.route('/int/<int:id>')
def get_int(id):
    print(id)
    return str(id)

#float
@app.route('/float/<float:money>')
def get_float(money):
    print(money)
    return str(money)

#path:支持路径/的字符串
@app.route('/path/<path:money>')
def get_path(money):
    print(money)
    return str(money)

请求方法
默认支持GET,HEAD,OPTIONS,如果想支持某一请求方式,需手动指定
methods中可以指定请求方法:GET、PSOT、HEAD、PUT、DELETE

#methods:请求方式

@app.route('/methods_post',methods=['POST'])
def get_methods():
    return 'methods'

请求和响应

Request

/**服务器在接收到客户端的请求后,会自动创建Request对象
由Flask框架创建,Request对象不可修改

属性
	url	完整请求地址
	base_url	去掉GET参数的URL
	host_url	只有主机和端口号的URL
	path	路由中的路径
	method	请求方法
	remote_addr	请求的客户端地址
	args	GET请求参数
	form	POST请求参数
	files	文件上传
	headers	请求头
	cookies	请求中的cookie
	
ImmutableMultiDict类型:
	类似字典的数据结构,与字典的区别,可以存在相同的键
		args和form都是ImmutableMultiDict的对象
		ImmutableMultiDict中数据获取方式:
			dict['uname']或 dict.get('uname')
	获取指定key所对应的所有值:
		dict.getlist('uname')

#请求响应
#   request: 请求
#   response: 响应

# http一次前后端交互:先请求,后响应

#Request: 客户端向服务器发送请求
@app.route('/request',methods=['GET','POST'])
def get_request():
    pass
    print(request)  # 

虚拟环境

//查看venv使用
python -m venv -h
//创建虚拟环境
python -m venv venvdemo
//去创建的虚拟环境的Scripts目录下执行activate激活虚拟环境
C:\Users\sunh_\venvdemo\Scripts>activate

安装第三方依赖

pip install -r requirements.txt

你可能感兴趣的:(flask,学习,笔记)