【Flask从入门到精通:第一课:flask的基本介绍、flask快速搭建项目并运行】

  1. 从0开始入手到上手一个新的框架,应该怎么展开?
  2. flask这种轻量级的框架与django这种的重量级框架的区别?
  3. 针对web开发过程中,常见的数据库ORM的操作。
  4. 跟着学习flask的过程中,自己去学习和了解一个新的框架(Sanic,FastAPI)

旧的常用框架:django(3.0以后支持异步),flask(2.0以后支持异步)和 tornado(异步),twisted(异步)

新的常用框架:FastAPI,sanic,django4.0(目前的版本属于从同步到异步改造过程中),flask2.0(目前的版本属于从同步到异步改造过程中)

Sanic:https://sanicframework.org/zh/guide/

FastAPI:https://fastapi.tiangolo.com/zh/tutorial/first-steps/

Flask

Flask诞生于2010年,是Armin ronacher(阿明·罗纳彻)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架。

Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL。

flask的 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2。Itsdangrous(token加密模块),Click(终端命令管理工具),flask内核本身,这5个核心模块组成 Flask 框架。

官网: https://flask.palletsprojects.com/en/2.0.x/

官方文档: https://dormousehole.readthedocs.io/en/latest/index.html

Flask常用第三方扩展包:

  • Flask-SQLAlchemy:操作数据库,ORM;
  • Flask-script:终端脚本工具,脚手架; ( 淘汰,官方内置脚手架:Click)
  • Flask-migrate:管理迁移数据库;
  • Flask-Session:Session存储方式指定;
  • Flask-Mail:邮件;
  • Flask-Login:认证用户状态;(django内置Auth模块,用于实现用户登录退出,)
  • Flask-OpenID:认证, OAuth;(三方授权,)
  • Flask-RESTful:开发REST API的工具;
  • Flask JSON-RPC: 开发json-rpc远程服务[过程]调用
  • Flask-Bable:提供国际化和本地化支持,翻译;
  • Flask-Moment:本地化日期和时间
  • Flask-Admin:简单而可扩展的管理接口的框架
  • Flask-Bootstrap:集成前端Twitter Bootstrap框架(前后端分离,除了admin站点,基本不用这玩意)
  • Flask-WTF:表单生成模块;(前后端分离,除了admin站点,基本不用这玩意)
  • Flask-Marshmallow:序列化(类似djangorestframework的序列化器)

可以通过 https://pypi.org/search/?c=Framework+%3A%3A+Flask 查看更多flask官方推荐的扩展

准备

# anaconda创建虚拟环境
conda create -n flask python=3.9
# 进入/切换到指定名称的虚拟环境,如果不带任何参数,则默认回到全局环境base中。
# conda activate  <虚拟环境名称>
conda activate flask 
# 退出当前虚拟环境
conda deactivate

在这里插入图片描述

安装flask,则以下命令:

pip install flask -i https://pypi.douban.com/simple

在这里插入图片描述

创建flask项目

与django不同,flask不会提供任何的自动操作,所以需要手动创建项目目录,需要手动创建启动项目的管理文件

例如,创建项目目录 flaskdemo,在目录中创建manage.py.在pycharm中打开项目并指定上面创建的虚拟环境

在这里插入图片描述

创建一个flask框架的启动入口文件。名字可以是app.py/run.py/main.py/index.py/manage.py/start.py

manage.py,代码:

# 1. 导入flask核心类
from flask import Flask# 2. 初始化web应用程序的实例对象
app = Flask(__name__)# 4. 可以通过实例对象app提供的route路由装饰器,绑定视图与uri地址的关系
@app.route("/")
def index():# 5. 默认flask支持函数式视图,视图的函数名不能重复,否则报错!!!# 视图的返回值将被flask包装成响应对象的HTML文档内容,返回给客户端。return "<h1>hello flask</h1>"if __name__ == '__main__':# 3. 运行flask提供的测试web服务器程序app.run(host="0.0.0.0", port=5000, debug=True)

代码分析:

# 导入Flask类
from flask import Flask"""
Flask类的实例化参数:
import_name      Flask程序所在的包(模块),传 __name__ 就可以其可以决定 Flask 在访问静态文件时查找的路径
static_path          静态文件存储访问路径(不推荐使用,使用 static_url_path 代替)
static_url_path    静态文件的url访问路径,可以不传,默认为:/ + static_folder
static_folder        静态文件存储的文件夹,可以不传,默认为 static
template_folder  模板文件存储的文件夹,可以不传,默认为 templates
"""
app = Flask(__name__)# 编写路由视图
# flask的路由是通过给视图添加装饰器的方式进行编写的。当然也可以分离到另一个文件中。
# flask的视图函数,flask中默认允许通过return返回html格式数据给客户端。
@app.route('/')
def index():# 返回值如果是字符串,被自动作为参数传递给response对象进行实例化返回客户端return "<h1>hello flask</h1>"# 指定服务器IP和端口
if __name__ == '__main__':# 运行flaskapp.run(host="0.0.0.0", port=5000, debug=True)

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

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

相关文章

用SmartSql从数据库表中导出文档

在 SmartSql 中从数据库表中导出文档通常意味着将表结构和数据导出为文档格式&#xff0c;比如 Word、PDF、HTML 或者 Markdown。这通常涉及到以下步骤&#xff1a; 连接到数据库&#xff1a; 打开 SmartSql 客户端&#xff0c;并确保已成功连接到你的目标数据库。你需要提供正…

stopSelf 会走ondestory吗? 怎么关闭server

stopSelf() 方法用于停止服务&#xff08;Service&#xff09;的实例。当调用 stopSelf() 时&#xff0c;Android 系统会安排服务停止&#xff0c;但请注意&#xff0c;这并不意味着 onDestroy() 立即会被调用。确切的时机取决于系统资源管理和调度。通常&#xff0c;onDestroy…

unity中我想实现现实中琴弦的那种互动抖动效果,谈谈思路。

&#x1f3c6;本文收录于《CSDN问答解惑》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&…

BouncyCastleProvider 对 X.509 证书的生成

文章目录 前言BouncyCastleProvider 对 X.509 证书的生成1. demo 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在白嫖的话&#xf…

程序员学CFA——经济学(六)

经济学&#xff08;六&#xff09; 国际贸易与资本流动国际贸易相关术语开放/封闭经济自由贸易/贸易保护贸易比价国内生产总值与国民生产总值 国际贸易的利弊分析益处弊端 从贸易中获益&#xff1a;比较优势比较优势和绝对优势比较优势的来源 贸易限制和贸易保护施行贸易保护政…

基础算法之二分搜索:高效的查找方法

二分搜索:高效的查找方法 二分搜索是一种高效的搜索算法,特别适用于有序数组。它通过不断将搜索范围折半,迅速缩小查找范围,从而找到目标元素。让我们通过一个实际的例子来看看它是如何工作的。 假设你有一个已经按升序排列的数字数组,你需要查找一个特定的数字,比如75…

如何快速找车?一文教你如何打造一个高效的停车场反向寻车系统?

在当今快速发展的城市化进程中&#xff0c;大型商业综合体、购物中心和办公楼的停车场规模日益庞大&#xff0c;车辆数量急剧增加。随之而来的是车主在这些大型停车场中寻找自己车辆的困难。由于停车场空间大、结构复杂&#xff0c;缺乏有效的参照物&#xff0c;车主常常在寻车…

基于SpringBoot的网上书城管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术&#xff0c;基于SpringBoot框架 工具&#xff1a;Eclipse&#xff0c;MySQL 系统展示 首…

浙江中控 FCU-712控制器 处理器 模块

浙江中控 FCU-712控制器 处理器 模块感器类型&#xff1a; CMOS传感器&#xff0c;提供出色的图像质量和色彩还原度 分辨率&#xff1a; 高清&#xff08;HD&#xff09;或更高&#xff0c;确保捕捉到的图像清晰可辨 视频输出&#xff1a; 模拟或数字输出&#xff0c;可根据需…

英福康INFICON FabGuard传感器集成与分析系统PPT

英福康INFICON FabGuard传感器集成与分析系统PPT

VS安装Qt扩展工具

1-Visual Studio中安装QT插件 **插件下载地址&#xff1a;**http://download.qt.io/development_releases/vsaddin/ 关闭VS,双击下载的QT插件&#xff0c;默认安装即可&#xff1b; &#xff08;1&#xff09;配置Qt的MSVC编译器安装路径 打开Visual Studio&#xff0c;在菜单栏…

技术小白学习SSM框架(Spring、SpringMVC、MyBatis)

一、java vs python 语法 Python 的语法简洁&#xff0c;易于阅读&#xff0c;适合快速开发和原型设计。 Java 的语法更加严格&#xff0c;需要更多的代码来完成相同的功能&#xff0c;但这也带来了更强大的类型检查和错误预防。 类型系统 Python 是动态类型语言&#xff0c;变…

pbootCMS 数据库sqlite转mysql数据库

前言 pbootCMS默认使用 sqlite数据库 &#xff0c;那么什么是sqlite数据库呢&#xff1f; SQLite&#xff0c;是一款轻型的数据库&#xff0c;是遵守ACID的关系型数据库管理系统&#xff0c;它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌…

因为目录问题开通的另外一个网站的美化过程

起 其实也不完全是目录&#xff0c;是查找问题过程中看到别人的界面好好看&#xff0c;而且确实那个目录很吸引我…… 然后我在csdn看了半天&#xff0c;看到一个有目录的我赶紧换上&#xff0c;结果并不能显示。而且把原来黑色模式的给搞没有了——它居然要vip了……所以………

帕金森患者营养小贴士

&#x1f44b;亲爱的小伙伴们&#xff0c;今天我要给大家带来一份特别的关怀——关于帕金森患者的营养小贴士&#x1f4d8;。帕金森病虽然是一种神经系统疾病&#xff0c;但合理的营养摄入对于患者的生活质量有着不可忽视的影响哦&#xff01;&#x1f4aa; &#x1f34e;多吃水…

万界星空科技日化行业MES解决方案

日化行业MES&#xff08;制造执行系统&#xff09;解决方案是针对日化行业特点而设计的一套全面的生产管理系统&#xff0c;旨在提高生产效率、优化资源配置、加强质量控制&#xff0c;并推动企业的数字化转型。以下是对日化行业MES解决方案的详细阐述&#xff1a; 一、MES解决…

Spring框架提供了哪些测试支持?

Spring框架为开发人员提供了强大的测试支持&#xff0c;这些测试支持覆盖了从单元测试到集成测试的全方位需求。以下是Spring框架提供的一些主要测试功能&#xff1a; 1. 核心测试支持 Spring TestContext Framework&#xff1a;核心部分&#xff0c;提供了Spring应用的测试上…

TikTok短视频矩阵系统源码:创新驱动的内容生态引擎

在全球化的数字媒体时代&#xff0c;短视频已成为连接创作者与观众的桥梁。TikTok作为全球领先的短视频社交平台&#xff0c;其背后的短视频矩阵系统源码是支撑这一平台创新与成长的关键。本文将深入探讨TikTok短视频矩阵系统源码如何通过多账号管理、AI自动生成文案、批量剪辑…

【以史为镜、以史明志,知史爱党、知史爱国】中华上下五千年之-唐朝

唐朝&#xff08;618年—907年&#xff09;&#xff0c;是继隋朝之后的大一统中原王朝&#xff0c;共历二十一帝&#xff0c;享国二百八十九年。 隋末天下群雄并起&#xff0c;617年 唐国公李渊于晋阳起兵&#xff0c;次年称帝建立唐朝&#xff0c;定都长安。 唐太宗继位后开创…

shell脚本变量比较

在脚本中&#xff0c;将变量与固定字符串进行比较时&#xff0c;通过在变量和字符串前添加 X 是一种常见的做法。这种做法可以防止某些可能的错误&#xff0c;特别是当变量未定义或为空时。具体解释如下&#xff1a; 代码片段 if [ "X${debug}" "Xy" ];…