【Python】Flask学习笔记

一、搭建Flask环境

pip 是用来安装Python包的工具,一般在python安装完成时,会自动完成安装。
可以通过命令:pip --version 查看。

我使用的是python 3.9.12

虚拟环境搭建以及相关设置详见python虚拟环境

  1. 在终端中,执行以下命令,创建一个Flask专用的虚拟环境

    python -m venv flask_venv
    
  2. 在终端中,执行以下命令,进入虚拟环境

    & D:\python_Code\FlaskWeb\flask_venv\Scripts\Activate.ps1
    
  3. 在终端中,执行以下命令,安装Flask相关的包

    pip install flask
    
  4. 在终端中,执行以下命令,查看安装结果

    pip list
    

    安装前:安装前
    安装后:安装后

    click: 是一个命令行应用的框架。用于提供 flask 命令,并允许添加自定义管理命令。
    colorama: 模块可以跨多终端,显示字体不同的颜色和背景。
    importlib-metadata: 可以读取第三方包的元数据。
    itsdangerous: 保证数据完整性的安全标志数据,用于保护 Flask 的 session cookie。
    Jinja2: 是Python的一个流行的模板引擎。Web模板系统将模板与特定数据源组合以呈现动态网页。
    MarkupSafe: 与 Jinja 共用,在渲染页面时用于避免不可信的输入,防止注入攻击。
    WerKzeug: 作为一个Web框架的底层库,提供了很多封装好的类、API,可以帮助我们快速实现一些web开发所需要的功能.
    zipp: 在任何Python中使用zipp.Path代替zipfile.Path。一个兼容pathlib的Zipfile对象包装器。是标准库Path对象的官方后端移植。
    

二、了解Flask

强烈推荐:Flask中文文档

Flask是基于Werkzeug(WSGI工具包)和Jinja2(模板引擎)的web应用框架

Flask 可能是“微小”的,但它已经为满足您的各种生产需要做出了 充足的准备。
Flask 的理念是为所有应用建立一个良好的基础,其余的一切都取决于你自己或者扩 展。

  • Flask永远不会包含数据库层,也不会有表单库或是这个方面的其它东西。Flask本身只是Werkezug和Jinja2的之间的桥梁,前者实现一个合适的WSGI应用,后者处理模板。
  • 为什么呢?因为人们有不同的偏好和需求, Flask不可能把所有的需求都囊括在核心里。大多数 web 应用会需要一个模板引擎。然而不是每个应用都需要一个SQL数据库的。
Flask是一个非常小的python-web框架,被称为微型框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。
Flask是一个轻量级的可定制框架,即只提供一个强健的核心,其他功能通过扩展(插件库)来实现,你可以根据项目的需求进行量身打造。
Flask框架有自带的开发服务器,所以在开发环境下可以不需要额外装载服务器,但该服务器不建议在生产环境下使用。
  • Flask属于轻量级,代码方便,但想使用大部分功能的时候会需要安装大量的插件。

  • 在使用Flask过程中,主要是用到了三个框架,通俗意义上来说,Flask = Werkzeug + JInja2 +SQLAlchemy

     Werkzegu负责前后端的通信等
     JInja2是模板引擎,负责路由跳转和模板编写等
     SQLAlchemy负责是数据库使用等
    

1、Flask项目目录结构

  • 以下项目结构仅供参考查阅使用,开发过程中并不需要死板地搭建如此复杂的目录结构。
    完全可以根据自己的习惯以及项目的实际需求,对其进行适当的简化或者剪裁。

按照 功能结构组织: 模板在一个文件夹中,静态文件在另外一个文件夹中,视图在第三个文件夹中。

|ProjectName
|-app/ #程序包
|	|-__init__.py #flask实例工厂
|	|-manage.py #基于flask-scrip的命令行脚本,用于辅助管理项目
|	|-static/ #存放css、js、图片等静态文件
|	|-templates/ #存放模板
|	|	|-base.html #母版页
|	|	|-main/
|	|	|	|-index.html #主页/首页
|	|	|-OtherModules/ #其他业务模块模板
|	|-views/ #视图
|	|	|-__init__.py 
|	|	|-main.py #主模块视图
|	|	|-OtherModules.py #其他业务模块视图
|	|-errors.py #异常
|	|-models.py #数据模型
|	|-forms.py #表单
|	|-extensions.py #组织扩展,辅助引入第三方扩展库
|-config.py #全局配置文件
|-venv/ #虚拟环境
|-tests/ #项目测试
|-readme.txt #用于存储环境信息(所安装的库的版本信息),可通过pip freeze > readme.txt命令生成
|-migratios/ #数据库迁移文件,可利用第三方库进行生成并管理此文件目录
|-README.md #项目说明文档

按照分区组织: 同一个功能的模板,静态文件,视图都在一个文件夹内。

|ProjectName
|-app/ #程序包
|	|-__init__.py #flask实例工厂
|	|-manage.py #基于flask-scrip的命令行脚本,用于辅助管理项目
|	|-main/ #主模块
|	|	|-static/ #存放css、js、图片等静态文件
|	|	|-templates/ #存放模板
|	|	|	|-index.html #主页/首页
|	|	|-views/ #视图
|	|	|-errors.py #异常
|	|	|-models.py #数据模型
|	|	|-forms.py #表单
|	|-OtherModules/ #其他业务模块,参考主模块目录
|	|-extensions.py #组织扩展,辅助引入第三方扩展库
|-config.py #全局配置文件
|-venv/ #虚拟环境
|-tests/ #项目测试
|-readme.txt #用于存储环境信息(所安装的库的版本信息),可通过pip freeze > readme.txt命令生成
|-migratios/ #数据库迁移文件,可利用第三方库进行生成并管理此文件目录
|-README.md #项目说明文档

两种组织方式的优劣并无定论,选择自己喜欢的就好

对于一个web项目,往往我们会遵循 mvc

  • model:模型,当用户在页面上点击了一个按钮,控制器通过模型将数据存入对应的数据库
  • view:视图,展示的页面
  • controller:控制器,如果用户点击了视图中的按钮,那么就相当于触发了一个事件,就会通过控制器,系统就需要决定把这个事件交给谁去处理

对于Python的项目,我们会遵循 mtv

  • model:模型,当用户在页面上点击了一个按钮,控制器通过模型将数据存入对应的数据库
  • template :模板,比如网页,html
  • view:视图,类似于web的控制器,起控制作用,里面写的就是我们的python代码

2、Flask常用扩展包

Flask-SQLAlchemy: 封装了SQLAlchemy,提供ORM
Flask-Migrate: 处理SQLAlchemy数据库的迁移(migrations)
flask-wtf: 封装了WTForms,提供表单功能
flask-script: 支持在Flask里编写额外的脚本
Flask-Login: 提供账号session管理
flask-bootstrap: 封装了Bootstrap框架
flask-sijax: 帮助开发者将Ajax引入到应用程序

三、使用Flask

1、主要知识点

快速上手Flask

HTML转义
路由
	变量规则
	唯一的URL/重定向行为
	URL构建
	HTTP方法
静态文件
渲染模板
操作请求数据
	本地环境
	请求对象
	文件上传
	Cookies
重定向和错误
关于响应
	JSON 格式的 API
会话
消息闪现
日志
集成WSGI中间件
使用Flask扩展
部署到网络服务器

2、动手尝试

不管项目大小,应当养成使用版本控制(如Git)的习惯

参考:教程——Flask中文文档(2.1.x)

1)项目简介

该示例项目为具备基本功能的博客应用。(数据库用的是自带的sqlite3)

未登录的首页登录后的首页
在这里插入图片描述在这里插入图片描述
  • 用户可以注册、登录和注销账户。
注册登录
在这里插入图片描述在这里插入图片描述
  • 用户无需登录账户即可浏览帖子。
  • 用户在登录账户后,才可以发贴、编辑或者删除自己的帖子。
发帖编辑
在这里插入图片描述在这里插入图片描述
2)项目源码

flask官方示例教程源码——GitHub(GitHub有时网络不好进不去,多试几次就行了)

个人整理版示例源码——Gitee

3)解惑参考

Flask 方案

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值