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在…

检测和缓解僵尸网络

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

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

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

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

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

前端根据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分成多个批次,每次只查询一部分商品详情,这样既可以减少每次请…

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

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

买工业用品就找震坤行,提供震坤行商品数据,数据分析的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不一致…

LCR 155. 将二叉搜索树转化为排序的双向链表

解题思路: 中序遍历法(二叉搜索树在中序遍历时是从小到大排列的)。 // 打印中序遍历 void dfs(Node root) {if(root null) return;dfs(root.left); // 左System.out.println(root.val); // 根dfs(root.right); // 右 }采用head作为返回&am…

跑步中位数

title: 跑步中位数 date: 2024-01-04 15:47:51 tags: 对顶堆 catefories: 算法进阶指南 题目大意 解题思路 动态维护中位数问题。可以建立两个二叉堆,一个大顶堆一个小顶堆,在依次读入整数序列的过程中,设当前序列长度为 M M M,我们始终保持…

中国5米分辨率坡度数据

中国5米分辨率坡度数据 坡度是地表单元陡缓的程度,通常把坡面的垂直高度和水平距离的比值称为坡度。坡度的表示方法有百分比法、度数法、密位法和分数法四种,其中以百分比法和度数法较为常用。 中国5米分辨率坡度数据集,利用5米分辨率DEM数据…

借还款记账表,借款还款记账软件

我们每个人都在为生活奔波,为事业打拼。但有时候,生活中的一些小事情,比如朋友间的借贷、还款,就可能让我们的生活变得有些混乱。为了解决这个问题,一个全新的借还款记账软件【晨曦记账本】横空出世,它不仅…

如何实现APP安全加固?加固技术、方法和方案

​ 本文我们着重分享App安全加固的相关内容。 ​ (安全检测内容) 通过前面的文章我们知道了app安全检测要去检测哪些内容,发现问题后我们如何去修复?如何避免安全问题?首先我们先来讲一下APP安全加固技术。 Ipa Guar…

pinia 给 state 指定变量类型

pinia 给 state 指定变量类型 问题描述 自从用 vitetsvue3 以来,我一直有一个很大的疑问,就是 pinia 中的 state 变量类型该从哪定义,如何定义它? 因为我在使用未定义类型的 state 变量的时候一直会有一个提示,提示说…

免费搭建知识付费平台:让知识更有价值

明理信息科技知识付费saas租户平台 在当今的知识经济时代,一个高效、便捷的知识服务平台对于企业和个人至关重要。然而,市面上的众多知识服务平台中,许多产品存在高昂的费用、无用功能的堆砌、无法定制化等问题,让用户进退两难&…

VS Code打造Autohotkey环境

文章目录 简介和安装功能说明测试相关推荐 简介和安装 Autohotkey堪称自动化效率神器,可以穿透Windows窗口,获取UI对象,从而可以在现有程序的基础上,进行有针对性的开发,大大提高效率。 VS Code提供了AHK插件&#x…

KNN 分类(选择最佳的 K 值,并可视化模型精度与 n_neighbors 的关系)

import matplotlib.pyplot as plt from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier# 导入乳腺癌数据集 cancer load_breast_cancer()# 划分训练集和测试集 X_tra…