Flask入门教程

Flask入门教程

简介

Flask是由Armin ronacher于2010年用Python语言基于 Werkzeug 工具箱编写的轻量级Web开发框架。

特点

Flask只提供核心功能,其他几乎所有的功能都需要用到拓展,比如可以通过Flask-SQLAlchemy拓展对数据库进行操作等等。

核心

由Werkzeug与Jinja2组成,Werkzeug是一个全面的WSGI Web应用程序库,Jinja是一种现代且设计友好的Python模板语言。

Flask常用扩展

  • Flask-SQLalchemy:操作数据库
  • Flask-script:插入脚本
  • Flask-migrate:管理迁移数据库
  • Flask-Session:Session存储方式指定

相关文档

  1. 中文文档
  2. 英文文档

Flask初体验

安装并使用虚拟环境

virtualenv 创建和管理虚拟环境
# 安装
pip install virtualenv
# 创建
virtualenv flask_env
# 使用
source flask_env/bin/activate
Pipenv 创建和管理虚拟环境
# 安装
pip install pipenv
# 创建
pipenv install
# 使用
pipenv shell

安装指定版本flask框架

sudo pip install flask==1.0.2

创建一个文件,并带入编写第一个Flask程序

touch helloflask.py
vim helloflask.py

在文件中写入以下代码

# 导入Flask类
from flask import Flask# 传递__name__参数,创建一个叫app的Flask实例,该实例将会成为我们的 WSGI 应用。
app = Flask(__name__)# 通过route装饰器来告诉Flask触发函数的URL 
@app.route('/')
# index视图函数,在访问根路径时会调用该函数通过其返回值得到结果
def index():return 'Hello Flask'if __name__ == '__main__':# 通过run方法启动web服务器app.run()

退出编辑模式,运行该程序

python helloflask.py

可以看到以下结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这样就启动了一个非常简单的内建的服务器。这个服务器用于测试应该是足够了,但是 用于生产可能是不够的。现在在浏览器中打开 http://127.0.0.1:5000/ ,应该可以看到 Hello Flask! 字样。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

相关配置参数

初始化参数

创建Flask项目的第一步就是实例化Flask对象,以下是实例化对象需要的参数详解

  • import_name:Flask程序所在的包(模块),传 __name__ 就可以,

  • static_url_path:静态文件访问路径,可以不传,默认为:/ + static_folder

  • static_folder:静态文件存储的文件夹,可以不传,默认为 static

  • static_host:使用远程主机存储静态文件的地址,默认为None。当host_matching为True时,可以通过static_folder配置静态文件存储的文件夹

  • host_matching:设置url_map.host_matching属性,默认为False

  • subdomain_matching:匹配路由时,请考虑与以下项相关的子域:data:`SERVER_NAME’。默认为False。

  • template_folder:模板文件存储的文件夹,可以不传,默认为 templates

  • instance_path:默认情况下,应用程序的备用实例路径假定包或模块旁边的文件夹“instance”为实例路径。

  • instance_relative_config:如果将用于加载配置的相对文件名设置为“True”,则假定该文件名相对于实例路径而不是应用程序根。

  • root_path:默认情况下,Flask将自动计算应用程序根路径。在某些情况下,这无法实现(例如,如果包是Python 3命名空间包),需要手动定义。

程序加载配置

在Flask程序运行前,我们可以给Flask设置相关配置,例如ENV(应用程序在什么环境中运行),DEBUG(是否启用调试模式)TESTING(启用测试模式)等配置,常见的有两种方式来实现.

  • 从配置文件中加载:app.config.from_pyfile()

    创建一个配置文件

    touch config.ini
    vim config.ini 
    

    写入配置信息

    DEBUG = True
    

    选择从配置文件加载

    # 创建 Flask 类对象,指向程序所在的包的名称
    app = Flask(__name__)# 从配置文件中加载配置
    app.config.from_pyfile('config.ini')
    
  • 从配置对象中加载:app.config.from_object()

    创建一个配置类,然后将类名传入即可

    # 配置类
    class ConfigObject(object):DEBUG = True# 创建 Flask 类对象,指向程序所在的包的名称
    app = Flask(__name__)# 从配置对象中加载配置
    app.config.from_object(Config)
    

程序运行配置

这个demo中Flask项目程序启动的入口是app.run()。常见的配置选项有host, port,debug,分别是设置运行主机的ip地址,端口号,是否打开调试模式,当配置文件与这里都有debug时,最终会以这里的debug为准。

app.run(host="127.0.0.1", port=8000)

路由

在Web开发中,路由是一种将URL转发到对应视图的程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/595927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于双向LSTM模型完成文本分类任务

6.4.1 数据处理 IMDB电影评论数据集是一份关于电影评论的经典二分类数据集.IMDB 按照评分的高低筛选出了积极评论和消极评论,如果评分 ≥7≥7,则认为是积极评论;如果评分 ≤4≤4,则认为是消极评论.数据集包…

“ManageEngine荣获Gartner SIEM客户选择四连冠“

我们非常激动地宣布,ManageEngine已经连续第四次被认定为Gartner Peer Insights‘Voice of the Customer’:安全信息与事件管理(SIEM)中的客户选择。这不仅是对我们卓越SIEM解决方案承诺的肯定,也延续了ManageEngine在…

LINUX基线要求及加固方法

《YDT 2701-2014 电信网和互联网安全防护基线配置要求及检测要求 操作系统 LINUX篇》 一、账号 应按照不同用户分配不同账号 检查/etc/passwd是否有只有root用户,应用应使用其他用户账号部署 限制用户su到root 编辑su文件(vi /etc/pam.d/su),在开头添…

检测和缓解僵尸网络

僵尸网络源自“机器人网络”一词,是感染了恶意软件的网络或机器集群,允许黑客控制并发起一系列攻击。僵尸网络的强度完全取决于它所包含的受感染机器的数量。攻击者接管这些设备的操作,以使用僵尸网络命令和控制模型进行远程控制。 什么是僵…

<HarmonyOS第一课>应用程序框架

【习题】应用程序框架 目录 判断题 单选题 多选题 判断题 1. 一个应用只能有一个UIAbility。错误 正确(True)错误(False) 2. 创建的Empty Ability模板工程,初始会生成一个UIAbility文件。正确 正确(True)错误(False) 3. 每调用一次router.pushUrl()方法&…

MultipartFile转换file

文章目录 前言一、方法二、注意事项 前言 最近项目中需要处理一个图片上传的业务,将MultipartFile转换file类型文件,然后处理,这里浅浅记录一下 一、方法 private static File convert(MultipartFile file) throws IOException {File convFi…

K线+直线 现货黄金也可能变现

现货黄金行情怎么做,这是投资者需要思考的问题。幸运的是,现在市面上有很多书籍,是其他有经验、有想法的投资者们对其经验的总结和分享,此外网络上还有不同的文章和各种各样的视频介绍相关交易经验,这都是可以让我们借…

22款奔驰GLE450升级香氛负离子 车载香薰

相信大家都知道,奔驰自从研发出香氛负离子系统后,一直都受广大奔驰车主的追捧,香氛负离子不仅可以散发出清香淡雅的香气外,还可以对车内的空气进行过滤,使车内的有害气味通过负离子进行过滤,达到车内保持清…

prototype 和 __proto__

是什么? prototype(显示原型):每个函数都有一个prototype属性__proto__(隐式原型):每个实例对象都会有__proto__属性 两者有什么关系? 一般,构造函数的显示原型和其实例…

智能指针的延迟报错问题

最近工作上发现一个比较复杂的代码出现随机报错问题,话不多说,直接debug模式开启ASAN机制构建程序, set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g -fstack-protector -fsanitizeaddress -fno-omit-frame-pointer")很快能定位…

huggingface——设置不同层不同学习率

前言 这玩意教程咋这么难找???? 代码 参考:https://github.com/X-PLUG/mPLUG-Owl/blob/main/mPLUG-Owl2/mplug_owl2/train/mplug_owl2_trainer.py#L133C33-L133C33 先定义你的trainer,继承huggingface的…

[EFI]英特尔 冥王峡谷 NUC8i7HVK 电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况主板 英特尔 NUC8i7HVK 处理器 Intel Core™ i7-8809G (Kaby Lake-r) 已驱动内存2x16GB DDR4-2400已驱动硬盘1TB PCIe-NVMe M.2 SSD已驱动显卡Intel HD 630 (Empty Framebuffer)Radeon™ RX Vega M GH Graphics 4GB已驱动声卡Realtek HDA ALC700已驱动网卡 英特…

前端根据URL地址实现下载(txt,图片,word,xlsx,ppt)

前端根据URL地址实现下载(txt,图片,word,xlsx,ppt) 一、对于txt,图片类的二、对于word,xlsx,ppt类的1.a标签可以实现下载2. window.open() 一、对于txt,图片类…

aliexpress商品API(item_get-获得aliexpress商品详情):进行批量操作

使用AliExpress的店铺或分类API:这些API可以为你提供某个店铺或分类下的所有商品列表,然后你可以根据这个列表逐个查询商品详情。分批查询:你可以将商品ID分成多个批次,每次只查询一部分商品详情,这样既可以减少每次请…

用雪花算法生成全局唯一序列

雪花算法是一种分布式唯一ID生成算法,通过对时间戳、工作节点ID和序列号进行位运算和组合,生成一个可排序且唯一的64位ID。 实现原理: 首先,我们需要定义算法中的参数: 时间戳:使用当前时间戳,…

记录一个常量定义导致的重复问题duplicate symbol ‘_kk‘ in:

原因: 在.h文件中定义了一个常量 如下 NSString *const kk "FASDF";interface CardCourseViewController : LBBaseViewControllerend将这句代码去掉即可 NSString *const kk "FASDF";![请添加图片描述](https://img-blog.csdnimg.cn/direct…

工业RFID技术发展趋势分析

RFID技术是物联网的重要组成部分,是连接物理世界和数字世界的关键节点。RFID技术已经广泛应用于供应链管理、智能物流、零售、医疗、安防等领域,在工业制造领域也有着广泛的应用前景和市场潜力。 工业RFID技术发展趋势分析 工业RFID技术是一种利用无线射…

买工业用品就找震坤行,提供震坤行商品数据,数据分析的API接口

要接入API接口以采集电商平台上的商品数据,可以按照以下步骤进行: 1、找到可用的API接口:首先,需要找到支持查询商品信息的API接口。这些信息通常可以在电商平台的官方文档或开发者门户网站上找到。 2、注册并获取API密钥&#x…

什么是差值表达式

在Vue.js中,差值表达式是一种基本的数据绑定形式,用于将数据绑定到文档对象模型(DOM)上。差值表达式通常使用双大括号 {{ }} 来表示,这种语法非常直观。当Vue实例的数据发生变化时,差值表达式的内容也会相应…

CCNP课程实验-06-EIGRP-Trouble-Shooting

目录 实验条件网络拓朴 环境配置开始排错错误1:没有配置IP地址,IP地址宣告有误错误2:R3配置了与R1不同的K值报错了。错误3:R4上的AS号配置错,不是1234错误4:R2上配置的Key-chain的R4上配置的Key-chain不一致…