栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

flask部署(大体了解)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

flask部署(大体了解)

框架学习目标:
  1. 如何编写视图
  2. 如何处理请求
  3. 如何构造响应
falsk简介

flask用Python语言基于Werkzeug工具箱编写的轻量极Web开发框架。
flask本身相当于一个内核,其他几乎 所有的功能都要用到扩展(邮箱扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAIchemy),都需要第三方的扩展来实现。可以用Flask扩展加入ORM,窗口体验证工具,文件上传,身份验证等。 其WSGI工具箱采用Werkzeug(路由模块),模板引擎使用Jinja2,这两个也是Flask框架的核心。

框架的对比

重量级的框架:为方便业务程序的开发,提供了丰富的工具、组件,如Django
快速实现业务、不考虑技术选型,越简单直接越好–>Django
轻量级的框架:只提供Web框架的核心功能,自由、灵活、高度定制,如Flask,Tornado
自由、灵活、高度定制–>flask

flask程序编写

创建.py文件

# 导入Flasklei
from flask import Flask]

# flask类接收一个参数__name__
app = Flask(__name__)

# 装饰器的作用是将路由映射到视图函数index
@app.route('/')
def index():
	return 'hell0 world'

if __name__ = '__main__':
	app.run()
Flask对象初始化参数
  • import_name
    Flask程序所在的包(模块),传__name__就可以
    其可以决定Flask在访问静态文件时查找的路径
  • static_url_path
    静态文件访问路径,可以不传,默认为:/+static_folder
  • static_folder
    静态文件存储的文件夹,可以不传,默认为static
  • template_folder
    模板文件存储文件夹,可以不传,默认为templates
配置加载的方式
    1、 从配置对象中加载
    app.config.from_object(配置对象)
    继承-->优点 复用
    敏感数据暴露  缺点  
from flask import Flask
class DefaultConfig(object)
	SECRET_KEY = '4564564564564'

app = Flask(__name__)
# 设置加载
app.config.from_object(DefaultConfig)

#定义视图

@app.route('/')
def index():
	print(aoo.config['SECRET_KEY'])
	return 'hello world'

if __name__ = '__main__'
	app.run()
2、从配置文件中加载
 app.config.from_pyfile('setting.py')
优点-->独立文件  保护敏感数据
缺点-->不能继承,路径固定 不灵活
from flask import Flask

app = Flask(__name__)
app.config.from_pyfile('setting')

# 定义视图
@app.route('/')
def index():
	print(app.config['setting.py'])
	return 'hello world'

if __name__ = '__main__'
	app.run()
3、环境变量中加载(未学)
优点-->独立文件,保护敏感数据 文件路径不固定 灵活
缺点-->不方便,要设置环境变量
app.run参数

可以指定运行的主机IP地址,端口,是否开启调式模式

app.run(host = ‘0.0.0.0’, port=5000,debug = True)

说明
  • 环境变量FLASK_APP说明flask的启动实例
  • flask run -h 0.0.0.0 -p 8000 绑定地址 端口
  • flask run --help获取帮助
  • 生产模式与开发模式控制
    通过FLASK_ENV环境变量指明
    export FLASK_ENV=production 运行在生产模式,为知名则默认为此方式
    export FLASK_ENV=development 运行在开发模式
查询路由信息

flask routes

Endpoint:代表视图函数的名字(跟视频的不一样),我这里应该是显示错了,在控制台输出的是index
Methods:请求方式
Rule:路径

在程序中获取
在应用中url_map属性中保存着整个Flask应用的路由映射信息,可以通过读取这个属性获取路由信息

print(app.url_map)
# 遍历路由信息
for rule in app.url_map.iter_rules():
	print('name={} path ={}'.format(rule.endpoint,rule.rule))
指定请求方式

在Flask中,定义路由其默认的请求方式为(未具体了解):

  • GET
  • OPTIONS(自带) – 简化版的GET请求,用于询问服务器接口信息的,比如接口允许的请求方式 允许的请求源头域名。
  • HEAD(自带)

利用methods参数可以指定一个接口的请求方式

@app.route("/itcast1",methods=["POST"])
def view_func_1():
	return "Hello world 1"
@app.route("/itcast2",methods=["GET","POST"])
def view_func_2():
	return "hello world 2"
蓝图

在Flask中,使用蓝图Blueprint来分模块组织管理。
蓝图实际可以理解为是一个存储一组视图方法的容器队像,具有如下特点:

  1. 一个应用可以具有多个Blueprint
  2. 可以将一个Blueprint注册到任何一个未使用的URL下如“/user”,"/goods"
  3. Blueprint可以单独具有自己的模块,静态文件或者其它的通用操作方法,它并不是必须要实现应用的视图和函数
  4. 在一个应用初始化时,就应该要注册需要使用的Blueprint
    但是一个Blueprint并不是一个完整的应用,它不能独立于应用运行,而必须要注册到某一个应用。

使用蓝图的三步骤
1.创建一个蓝图对象

uwer_bp = Blueprint('user',__name__)

2.在这个蓝图对象上进行操作,注册路由,指定静态文件夹,注册模板过滤气

@user_bp.route('/')
def user_profile():
	return 'user_profile'

3.在应用对象上注册这个蓝图对象

app.register_blueprint(user_bp)
render_template

render_template:引入index.html,同时根据后面传入的参数,对html进行渲染

from flask import Flask, render_template

app = Flask(__name__)


# 1.如何返回一个网页(模板)
# 2.如何给模板填充数据
@app.route('/')
def index():
    return render_template('index.html')


if __name__ == '__main__':
    app.run()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/444461.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号