iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >《Flask Web开发》学习笔记
  • 912
分享到

《Flask Web开发》学习笔记

学习笔记FlaskWeb 2023-01-30 23:01:37 912人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

  前言:想熟练掌握一门WEB框架,为以后即将诞生的测试工具集做准备。为什么选择flask要做熟练掌握的一门框架,而不是其他的,最主要的原因是可以随意定制。   特别提醒:这本书的代码会提交在GitHub,有基础的人可以直接看githu

  前言:想熟练掌握一门WEB框架,为以后即将诞生的测试工具集做准备。为什么选择flask要做熟练掌握的一门框架,而不是其他的,最主要的原因是可以随意定制。

  特别提醒:这本书的代码会提交在GitHub,有基础的人可以直接看github的代码来学习flask。基础差还是建议买书来学习,书中会有对“为什么这么用?”的解答,可以增加对软件架构的深入理解

  时间:阅读并操作完第一部分,做的总结

  建议:文章中有不对的地方,希望你可以告诉我

 

一、梳理

第一部分是Flask框架的基础应用,作者Miguel Grinberg(后面简称MG),一位拥有25年开发经验的人(25年的经验肯定能解决很多的“坑”),这一部门会涉及到6个模块,来完成一个大程序需要的代码架构,书中很好的解释了一些问题。

1,程序的基本结构     # 初始化app、路由、视图函数、flask框架的设计理念

2,模板        # Jinja2模板引擎、Flask-Bootstrap、错误页面、静态文件、Moment本地化时间

3,web表单      # CSRF(Cross-Site Request Forgery)防护、fORM渲染、flask核心特性Flash

4,数据库       #  介绍sqlNoSQL的区别、SQLAlchemy数据库框架、Flask-Migrate数据库迁移

5,电子邮件     #  Flask-Mail包装了smtplib

6,大型程序的结构    # 安排代码结构

这6个模块会涉及到具体的技术细节,有些比较重要,有些很难理解(blueprint蓝图),这里都会进行记录。上面的内容以“概念地图”(什么是概念地图)的方式呈现,能够更好的理解各个之间的关系

 

二、要点记录

1,Flask程序都必须创建一个app实例,app实例是Flask类的对象,FLask(__name__)参数决定了程序的根目录

2,单个文件的程序,使用@app.route('/')装饰器来为函数注册路由

3,Flask支持动态url,在route装饰器中使用'/user/<name>',尖括号的内容就是动态部分

4,Flask使用上下文临时把某些对象变为全局可访问,使用前要确保将其激活:【程序上下文全局变量】current_app、g【请求上下文全局变量】request、session

5,Jinja2支持宏(等同python函数)

6,模板继承:如果父模板的block标签内不为空,要添加{{ supper() }};子模板extends命令声明该模板继承自哪里

7,url_for()不仅可以在视图函数中,而且还可以在模板中使用

8,Flask-Moment不仅要有moment.js,还要依赖Jquery.js,而在flask_bootstrap中已经有jquery.js,所以要在模板引入momen.js

9,Flask-WTF的form能够防CSRF(跨站请求伪造)攻击,思路:在app内设置秘钥,Flask-WTF会生成加密token(令牌),再用token验证请求中的form数据的真假

10,Flask-WTF验证机制:每个form都继承自Form类,Form类定义表单一组字段,每个字段都用对象表示。字段对象可附属一个或多个验证函数,验证函数就是用来验证用户提交form的输入值是否符合要求

11,Flask-Bootstrap提供预先定义好的表单样式渲染整个Flask-WTF表单:{{ wtf.quick_form(form) }} 

12,判断所有验证函数是否接收的字段:validate_on_submit() True/False

13,浏览器刷新会重新提交前一个请求,post表单请求需要重定向到get请求:使用Flask的redirect(url_for('index'))

*14,Flask的flash是核心特性:提醒用户的信息已经被更改

15,SQL数据库特点:列数固定、行数可变、特殊的列[主键]、表之间关联[外键],行之间的这种联系就是关系型数据库

16,NoSQL数据库特点:集合代替表,文档代替记录

17,Flask-SQLAlchemy是关系型数据库框架,要通过数据库会话session(事务)才能跟新数据库;数据库会话能保证数据库的一致性

18,Flask-Migrate对Alembic迁移框架做了轻量包装,并集成到Flask-Script;Alembic是SQLAlchemy的主力开发人员编写的迁移框架

19,Flask-Migrate使用:配置、init创建迁移仓库、migrate自动构建迁移脚本(要检查迁移脚本)、upgrade提交到数据库中

20,Flask-Mail使用异步+Celery任务队列将邮件发送迁移到后台线程优化客户的加载体验

21,在单元测试中,需要在不同配置环境运行程序:使用程序工厂函数,可以动态修改配置,创建多个程序实例

22,程序工厂函数,让定义路由变的复杂,程序在运行时创建,只有调用create_app()之后才能使用app.route装饰器;flask提供的blueprint蓝图,就是解决这个问题

23,蓝图机制:蓝图中定义的路由处于休眠状态,直到蓝图注册到程序中,路由才成为程序一部分

24,蓝图使用:创建蓝图[登记]、注册蓝图;路由装饰器由蓝图提供、url_for('main.index'/'.index')使用改变

 

三、程序结构

--结束END--

本文标题: 《Flask Web开发》学习笔记

本文链接: https://www.lsjlt.com/news/180489.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 《Flask Web开发》学习笔记
      前言:想熟练掌握一门web框架,为以后即将诞生的测试工具集做准备。为什么选择flask要做熟练掌握的一门框架,而不是其他的,最主要的原因是可以随意定制。   特别提醒:这本书的代码会提交在github,有基础的人可以直接看githu...
    99+
    2023-01-30
    学习笔记 Flask Web
  • Web 开发学习笔记(1) --- 搭
    简介 Flask 是一个轻量级的 Web 框架, 如果要学习 Web 开发, Flask 非常适合作为我们学习的起点. 通过接下来的这一些列的博客, 我们将学习如何利用 Flask 以及其他工具, 搭建一个简单的网站. We'll bu...
    99+
    2023-01-31
    学习笔记 Web
  • Web 开发学习笔记(3) --- 申
    简介 现在已经进入 HTTPS 的时代, HTTPS 证书 目前应用广泛, 发展迅速. 相较于明文传输的 HTTP, HTTPS 更加安全. HTTPS 即 Hypertext Transfer Protocol Secure, ...
    99+
    2023-01-31
    学习笔记 Web
  • web开发框架Flask学习一
    flask框架 用Python做Web开发的三大框架特点 Django 主要特点是大而全,集成了很多的组件,例如:Admin Form Model等,不管你用不用的到,他都会为 ...
    99+
    2023-01-30
    框架 web Flask
  • web开发框架Flask学习二
    jinja2模板规范 在当前项目中创建一个文件为templates的文件夹,将其设置为模板文件夹,新建的html为模板页面, 在视图函数中使用render_template(".html的文件", my_...
    99+
    2023-01-30
    框架 web Flask
  • python web框架学习笔记
    一、web框架本质 1.基于socket,自己处理请求 #!/usr/bin/env python3 #coding:utf8 import socket def handle_request(cli...
    99+
    2022-06-04
    学习笔记 框架 python
  • Java 学习笔记:如何使用 NumPy 和 Django 开发 Web 应用?
    Web 应用是现代社会中不可或缺的一部分,而 Java 作为广泛使用的编程语言,可以通过 NumPy 和 Django 库轻松开发高质量的 Web 应用。本篇文章将为您介绍如何使用 NumPy 和 Django 开发 Web 应用。 一、...
    99+
    2023-09-27
    学习笔记 numy django
  • Android开发艺术探索学习笔记(七)
    第七章 Android动画深入分析  Android的动画分为三种:View动画,帧动画,属性动画。帧动画属于View动画。 7.1 View动画     View动...
    99+
    2022-06-06
    学习笔记 艺术 学习 android开发 Android
  • vue中watch的实际开发学习笔记
    目录前言一、watch是什么二、watch不同的实际使用场景开发案例1.场景1:加载完成后登录监听2.场景2:前面不同的选择框,影响下面的不同的选择框的选项内容3.场景3:深度监听4...
    99+
    2022-11-13
    vue中watch的作用 vue的watch函数 vue watch 方法
  • 学习笔记-TP5框架学习笔记\(路由\)
    TP5框架简单理解 (PS:只做粗略、关键知识的记录,TP程序的开始。详情请阅读官方手册) 1. 架构总览 TP程序的开始 PHP >=5.3.0, PHP7 ThinkPHP5.0应用基于MVC(模型-视图-控制器)的方...
    99+
    2023-10-25
    学习 php 开发语言
  • 学习 PHP:如何在笔记中记录开发技术?
    PHP是一种流行的服务器端编程语言,它被广泛用于开发Web应用程序。对于那些刚开始学习PHP的人来说,如何记录和整理学习笔记是一个非常重要的问题。在本文中,我们将介绍一些关于如何在笔记中记录PHP开发技术的技巧和建议。 使用Markdo...
    99+
    2023-09-02
    学习笔记 开发技术 存储
  • PHP学习笔记:如何使用Spring API来提升Web开发能力?
    在现代Web开发中,Spring API已经成为了非常流行的框架之一。它是一个Java平台的应用程序框架,可以用于构建各种类型的Web应用程序。但是,很多PHP开发人员可能并不知道Spring API可以用于PHP的Web开发。 在本文中...
    99+
    2023-09-10
    学习笔记 spring api
  • Android开发笔记之Intent初级学习教程
    本文讲述了Android开发笔记之Intent初级学习教程。分享给大家供大家参考,具体如下: 项目创建步骤: New Android Project-> Project ...
    99+
    2022-06-06
    学习 intent android开发 教程 Android
  • GO语言开发技术:学习笔记分享!
    GO语言是一门高效、可靠、可扩展的编程语言,由Google开发。它的出现解决了许多其他编程语言的问题,例如C++中的指针问题、Java中的垃圾回收等等。 GO语言在现代化的软件开发中,已经被广泛应用,并成为了云计算领域的事实标准。本篇文章...
    99+
    2023-08-02
    学习笔记 开发技术 linux
  • MySQL学习笔记(12):触发器
    本文更新于2019-06-23,使用MySQL 5.7,操作系统为Deepin 15.4。 目录SQL语句示例 SQL语句 为了便于描述,此处将创建触发器的DDL复述一次,其已于“SQL”章节描述。 CREATE TRIGGER ...
    99+
    2021-06-20
    MySQL学习笔记(12):触发器
  • python学习笔记(python发展介
    一、python介绍python的创始人为吉多·范罗苏姆(Guido van Rossum)目前python主要应用领域:·云计算·WEB开发·科学运算、人工智能·系统运维·金融:量化交易,金融分析等,作为动态语言的python,语言结构清...
    99+
    2023-01-31
    学习笔记 python
  • 从零开始学习PHP和Spring:API开发必备笔记
    随着互联网的发展,Web应用程序的需求也越来越高,而API开发已成为Web应用程序的重要组成部分。而对于API开发人员来说,掌握PHP和Spring框架的知识显得尤为重要。在本文中,我们将从零开始学习PHP和Spring框架的基础知识,以...
    99+
    2023-09-10
    学习笔记 spring api
  • 学习笔记3
    一文件查找和压缩1文件查找locate 搜索依赖于数据库,非实时搜索,搜索新建文件需手动更新,适于搜索稳定不频繁修改文件 find 实时搜索,精确搜索,默认当前目录递归搜索 find用法 -maxdepth...
    99+
    2023-01-31
    学习笔记
  • python3学习笔记
    好久不用python,努力捡起来ing python3语法 字符串 repr()把其他类型变量转换为字符串 ord()把单个字符转换为相应的ascii码 int()把其他进制的“字符串”转换为十进制 int(str,n...
    99+
    2023-01-31
    学习笔记
  • Android学习笔记
    LinearLayoutCompat 线性布局 android:orientation=“vertical” 指定布局内控件排列方式为 垂直排...
    99+
    2022-06-06
    android学习 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作