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转发到对应视图的程序。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode(33) 搜索旋转排序数组

整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], ..., nums[n-1], nums[0], nums[1], ..…

只需一招彻底解决SOLIDWORKS不显示缩略图预览

SOLIDWORKS缩略图能够让工程师便于识别想要打开的模型&#xff0c;但经常会有用户遇到在资源管理器中查看SOLIDWORKS文件时&#xff0c;仅显示SOLIDWORKS的图标&#xff0c;而没有相关文件的预览缩略图。 Windows文件夹选项设置 首先确保Windows文件夹选项设置&#xff0c;显…

【UEFI基础】EDK网络框架(通用函数和数据)

通用函数和数据 DPC DPC全称Deferred Procedure Call。Deferred的意思是“延迟”&#xff0c;这个DPC的作用就是注册函数&#xff0c;然后在之后的某个时刻调用&#xff0c;所以确实是有“延迟”的意思。DPC在UEFI的实现中包括两个部分。一部分是库函数DxeDpcLib&#xff0c;…

Java IO流介绍以及缓冲为何能提升性能

概念&#xff1a; 流是一种抽象概念&#xff0c;它代表了数据的无结构化传递。按照流的方式进行输入输出&#xff0c;数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作&#xff0c;而向流中添加数据的操作称为插入操作。 Java IO 也称为IO流&#xff0c;…

中文大语言模型 Llama-2 7B(或13B) 本地化部署 (国内云服务器、GPU单卡16GB、中文模型、WEB页面TextUI、简单入门)

本文目的是让大家先熟悉模型的部署&#xff0c;简单入门&#xff1b;所以只需要很小的算力&#xff0c;单台服务器 单GPU显卡&#xff08;显存不低于12GB&#xff09;&#xff0c;操作系统需要安装 Ubuntu 18.04。 1 服务器&操作系统 1.1服务器的准备 准备一台服务器 单张…

【论文阅读笔记】两篇完整模态脑瘤分割

两篇完整模态脑瘤分割论文&#xff0c;都是使用Transformer&#xff0c;没有什么特别的特色&#xff0c;也没有开源代码&#xff0c;因此只是简单记录一下。 3D CATBraTS: Channel attention transformer for brain tumour semantic segmentation El Badaoui R, Coll E B, Ps…

Linux第2步_创建虚拟机

VMware软件安装好后&#xff0c;就可以创建虚拟机了。 一、虚拟机对CPU的要求较高 i7 处理器&#xff1a;CPU&#xff1a;Intel(R) Core(TM) i7-8700 CPU 3.20GHz 3.19 GHz 内核数&#xff1a;6 线程数&#xff1a; 12 最大睿频频率&#xff1a; 4.60 GHz 英特尔 睿…

springcloud之集成nacos config

写在前面 源码 。 本文看下如下集成nacos config组件。 1&#xff1a;常见配置方式分析 我们先来看下常见的配置方式都有哪些&#xff0c;以及其有什么优点和缺点。 硬编码 优点&#xff1a;hardcode&#xff0c;除了开发的时候快些&#xff0c;爽一下&#xff0c;有个屁优…

网络机顶盒哪个好?耗时30天盘点网络机顶盒排名

网络机顶盒作为电视机的最佳搭档&#xff0c;是看片必备&#xff0c;网络机顶盒的品牌非常多让新手们在选购时往往不知道网络机顶盒哪个好&#xff0c;我耗时一个月测评了十几款热门的电视机顶盒&#xff0c;通过各个角度深度对比后整理了网络机顶盒排名&#xff0c;在选购时大…

NFC物联网开发在智慧校园中的应用

近年来&#xff0c;校园信息化建设速度加快&#xff0c;以物联网为基础、以各种应用服务系统为载体的智慧校园将教学、管理和校园生活充分融合&#xff0c;形成了工作、学习和生活的一体化环境。沉寂已久的NEC 技术&#xff0c;得益于智能手机的普及、无线网络数据速率提高&…

如何构建高效测试体系?掌握5大自动化测试模式就够了

软件开发过程中&#xff0c;高效的自动化测试体系是提升测试效率、保证产品质量关键&#xff0c;一个全面的测试体系涵盖多个维度&#xff0c;从功能性到用户界面&#xff0c;再到性能和安全性。 每个维度均采用不同的测试模式来满足特定的需求和解决特别的挑战&#xff0c;本…

Linux_源码编译安装LAMP

1. 安装httpd服务 在配置 Apache 网站服务之前&#xff0c;需要正确安装好 httpd 服务器软件。httpd 服务器的安装可以选用 RPM 安装、源码编译安装这两种方式&#xff0c;前者相对比较简单、快速&#xff0c;但是在功能上存在一定的局限性。在实际的生产环境中&#xff0c;使…

openGauss学习笔记-174 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作

文章目录 openGauss学习笔记-174 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作174.1 事务隔离说明174.2 写入和读写操作174.3 并发写入事务的潜在死锁情况 openGauss学习笔记-174 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作 174.1 事务隔离说…

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

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

VUE3跳转页面时 定时器未清除解决

一,问题 1、在vue中使用setTimeout定时器的时候&#xff0c;可能会遇到关不掉的情况&#xff0c;会存在明明已经在beforeDestroy和destroyed中设置了定时器清除了&#xff0c;但是有时候没生效&#xff0c;定时器还会继续执行。 2、在这里需要说一下setTimeout的使用场景&…

Kubernetes 配置Pod使用代理上网

配置Kubernetes Pod使用代理上网 在企业网络环境中进行Kubernetes集群的管理时&#xff0c;经常会遇到需要配置Pods通过HTTP代理服务器访问Internet的情况。这可能是由于各种原因&#xff0c;如安全策略限制、网络架构要求或者访问特定资源的需要。本文将介绍配置Kubernetes中…

天融信TOPSEC Cookie 远程命令执行漏洞复现

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 一、漏洞概述 天融信TOPSEC解决方案包括综合管理系统&#xff0c;各类安…

科研上新 | 第4期:语言-音乐对比预训练;查找表实现的神经网络推理;大模型时代重新定义搜索框架

编者按&#xff1a;欢迎阅读“科研上新”栏目&#xff01;“科研上新”汇聚了微软亚洲研究院最新的创新成果与科研动态。在这里&#xff0c;你可以快速浏览研究院的亮点资讯&#xff0c;保持对前沿领域的敏锐嗅觉&#xff0c;同时也能找到先进实用的开源工具。 本期内容速览 …

草图大师 sketchup pro2023

SketchUp Pro是一款功能强大的三维建模软件&#xff0c;适用于建筑、机械、室内设计等领域。它提供了丰富的绘图工具和灵活的建模选项&#xff0c;支持实时预览和多种设备适配&#xff0c;让用户能够快速高效地创建出逼真的三维模型。SketchUp Pro还具备强大的插件生态和团队协…

【mars3d】FixedRoute的circle没有跟polyline贴着模型的解决方案

问题&#xff1a;【mars3d】官网的贴模型示例中&#xff0c;参考api文档增加了circle的配置&#xff0c;但是FixedRoute的circle没有跟polyline贴着模型 circle: { radius: 10, materialType: mars3d.MaterialType.CircleWave, materialOptions: { color: "#ffff00"…