当前位置: 首页 > news >正文

【新书推荐】Web3.0应用开发实战(从Web 2.0到Web 3.0)

第一部分 Flask简介

 第1章 安装

 1.1 创建应用目录

 1.2 虚拟环境

 1.2.1 创建虚拟环境

 1.2.2 使用虚拟环境

 1.3 使用pip安装Python包

 1.4 使用pipregs输出包

 1.5 使用requirements.txt

 1.6 使用pipenv管理包

 第2章 应用的基本结构

 2.1 网页显示过程

 2.2 初始化

 2.3 路由和视图函数

 2.4 一个完整的应用

 2.5 Web开发服务器

 2.6 动态路由

 2.7 调试模式

 2.8 命令行选项

 2.9 请求-响应循环

 2.9.1 应用和请求上下文

 2.9.2 请求分派

 2.9.3 请求对象

 2.9.4 请求钩子

 2.9.5 响应Response

 2.9.6 对比cookie与session

 2.10 Flask扩展包

 第3章 模板

 3.1 Jinja2模板引擎

 3.1.1 渲染模板

 3.1.2 变量及占位符

 3.1.3 自定义过滤器

 3.1.4 控制结构

 3.1.5 宏及模板继承

 3.2 集成Bootstrap

 3.3 Bootstrap页面布局

 3.4 自定义错误页面

 3.5 链接

 3.6 静态文件

 3.7 使用Flask-Moment本地化日期和时间

 第4章 Web表单

 4.1 配置

 4.2 表单验证

 4.2.1 服务器端验证

 4.2.2 客户端验证

 4.3 自定义验证函数

 4.3.1 行内验证函数

 4.3.2 全局验证函数

 4.4 表单谊染

 4.5 防御CSRF攻击

 4.6 在视图函数中处理表单

 4.7 单个页面多个表单

 4.8 重定向和用户会话

 4.9 重定向到上一个页面

 4.9.1 使用HTTP referrer重定向

 4.9.2 使用查询参数next重定向

 4.10 闪现消息

 第5章 数据库

 5.1 SQL数据库

 5.2 NoSQL数据库

 5.3 使用SQL还是NoSQL

 5.4 Python数据库框架

 5.5 使用pymongo管理数据库

 5.6 数据库CRUD基本操作

 5.6.1 增

 5.6.2 删

 5.6.3 改

 5.6.4 查

 5.7 数据库查询操作符

 5.7.1 比较查询操作符

 5.7.2 逻辑查询操作符

 5.7.3 元素查询操作符

 5.7.4 评估查询操作符

 5.7.5 数组查询操作符

 5.8 数据库更新操作符

 5.8.1 字段更新操作符

 5.8.2 数组更新操作符

 5.8.3 修饰操作符

 5.9 聚合操作

 5.10 地理位置查询

 5.11 在视图函数中操作数据库

 5.12 集成Python shell

 5.13 MongoDB备份与恢复

 5.13.1 备份数据

 5.13.2 还原数据

 第6章 电子邮件

 6.1 使用Flask-Mail提供电子邮件支持

 6.2 在Python shell中发送电子邮件

 6.3 在应用中集成电子邮件发送功能

 6.4 异步发送电子邮件

 第7章 大型应用的结构

 7.1 项目结构

 7.2 配置选项

 7.3 应用包

 7.3.1 使用应用工厂函数

 7.3.2 在蓝本中实现应用功能

 7.4 应用脚本

 7.5 需求文件

 7.6 单元测试

 7.7 创建数据库

 7.8 运行应用

第二部分 实例:Web 2.0博客

 第8章 用户身份验证

 8.1 Flask的身份验证扩展

 8.2 密码安全性

 8.3 创建身份验证蓝本

 8.4 使用Flask-Login验证用户身份

 8.4.1 准备用于登录的用户模型

 8.4.2 保护路由

 8.4.3 添加登录表单

 8.4.4 用户登录

 8.4.5 用户退出

 8.4.6 理解Flask-Login的运作方式

 8.4.7 登录测试

 8.5 注册新用户

 8.5.1 添加用户注册表单

 8.5.2 处理用户注册

 8.6 确认账户

 8.6.1 使用itsdangerous生成确认令牌

 8.6.2 发送确认邮件

 8.7 管理账户

 8.8 用户角色

 第9章 用户资料

 9.1 资料信息

 9.2 用户资料页面

 9.3 资料编辑器

 9.3.1 用户级资料编辑器

 9.3.2 管理员级资料编辑器

 9.4 用户头像

 第10章 博客文章

 10.1 提交和显示博客文章

 10.2 在资料页中显示博客文章

 10.3 分页显示长博客文章列表

 10.3.1 创建虚拟博客文章数据

 10.3.2 在页面中谊染数据

 10.3.3 添加分页导航

 10.4 使用Markdown和Flask-PageDown支持富文本文章

 10.4.1 使用Flask-PageDown

 10.4.2 CKeditor富文本编辑器

 10.5 博客文章的固定链接

 10.6 博客文章编辑器

 第11章 关注者

 11.1 再论数据库关系

 11.2 在资料页面中显示关注者

 11.3 查看指定用户的关注者和被关注者

 11.4 在首页显示所关注用户的文章

 第12章 用户评论

 12.1 评论在数据库中的表示

 12.2 提交和显示评论

 12.3 管理评论

 第13章 应用接口

 13.1 REST简介

 13.1.1 资源就是一切

 13.1.2 请求方法

 13.1.3 请求和响应主体

 13.1.4 版本

 13.2 使用Flask实现REST式Web服务

 13.2.1 创建API蓝本

 13.2.2 错误处理

 13.2.3 使用Flask-HTTPAuth验证用户身份

 13.2.4 基于令牌的身份验证

 13.2.5 基于JWT的身份验证

 13.2.6 资源和JSON的序列化转换

 13.2.7 实现资源的各个端点

 13.3 使用Jupyter notebook测试Web服务

第三部分 实例:Web 3.0商城

 第14章 Web 3.0简易商城

 14.1 区块链

 14.2 Web 3.0

 14.2.1 以太坊域名(ENS)

 14.2.2 区块链存储

 14.3 MetaMask

 14.4 Web3.js

 14.5 以太坊代币计量单位

 14.6 简易商城项目结构

 14.7 页面构成

 14.7.1 路由函数

 14.7.2 视图模板

 14.8 MetaMask获取钱包余额、交易回执

 14.8.1 获取余额

 14.8.2 交易回执

第四部分 成功在望

 第15章 测试

 15.1 获取代码覆盖度报告

 15.2 Flask测试Web客户端

 15.3 值得测试吗

 15.4 性能

 第16章 部署

 16.1 部署流程

 16.2 把生产环境中的错误写入日志

 16.3 云部署

 16.3.1 安装更新开发工具及各种依赖

 16.3.2 MongoDB数据库

 16.3.3 Nginx服务器

 16.3.4 Gunicorn服务器

 16.3.5 Supervisor进程守护

 第17章 其他资源

 17.1 使用集成开发环境

 17.2 寻找Flask扩展

 17.3 寻求帮助

 17.4 参与Flask社区

参考文献

......

本书共分四部分,全面介绍如何基于Python微框架Flask进行Web开发。第一部分是Flask简介,介绍使用Flask框架及扩展开发Web程序的必*基础知识。第二部分则给出一个Web 2.0实例,真正带领大家一步步开发完整的博客和社交应用Flasky,从而将前述知识融会贯通,付诸实践。第三部分在初步了解Web 2.0建站流程的基础上,建立一个简单的Web 3.0商城。第四部分介绍了发布应用之前必须考虑的事项,如单元测试策略、性能分析技术、Flask程序的部署方式等。

本书采用Python 3.X、MongoDB软件,适合熟悉Python编程,有意通过Flask全面掌握Web开发的程序员学习参考。

相关文章:

【新书推荐】Web3.0应用开发实战(从Web 2.0到Web 3.0)

第一部分 Flask简介 第1章 安装 1.1 创建应用目录 1.2 虚拟环境 1.2.1 创建虚拟环境 1.2.2 使用虚拟环境 1.3 使用pip安装Python包 1.4 使用pipregs输出包 1.5 使用requirements.txt 1.6 使用pipenv管理包 第2章 应用的基本结构 2.1 网页显示过程 2.2 初始化 2.3 路由和视图函数…...

vue3中状态管理库pinia的安装和使用方法介绍及和vuex的区别

文章目录 Pinia 的主要特点:如何使用:1.安装2.定义3.使用 pinia和vuex的对比 Pinia 与 Vuex 一样,是作为 Vue 的“状态存储库”,用来实现 跨页面/组件 形式的数据状态共享。它允许你跨组件或页面共享状态。如果你熟悉组合式 API 的…...

领略指针之妙

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…...

迭代器模式介绍

目录 一、迭代器模式介绍 1.1 迭代器模式定义 1.2 迭代器模式原理 1.2.1 迭代器模式类图 1.2.2 模式角色说明 1.2.3 示例代码 二、迭代模式的应用 2.1 需求说明 2.2 需求实现 2.2.1 抽象迭代类 2.2.2 抽象集合类 2.2.3 主题类 2.2.4 具体迭代类 2.2.5 具体集合类 …...

算法每日一题: 最大字符串匹配数目 | 哈希 | 哈希表 | 题意分析

hello 大家好,我是星恒 今天给大家带来的是hash,思路有好几种,需要注意的是这中简单的题目需要仔细看条件,往往他们有对应题目的特殊的解法 题目:leetcode 2744给你一个下标从 0 开始的数组 words ,数组中包…...

自然语言处理(Natural Language Processing,NLP)解密

专栏集锦,大佬们可以收藏以备不时之需: Spring Cloud 专栏:http://t.csdnimg.cn/WDmJ9 Python 专栏:http://t.csdnimg.cn/hMwPR Redis 专栏:http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏:http://t.csdni…...

【DevOps-08-5】目标服务器准备脚本,并基于Harbor的最终部署

一、简要描述 告知目标服务器拉取哪个镜像判断当前服务器是否正在运行容器,停止并删除如果目标服务器已经存在当前镜像,删除当前版本的镜像目标服务器拉取Harbor上的镜像将拉取下来的镜像运行成容器二、准备目标服务器脚本文件 1、在部署的目标服务器准备deploy.sh部署脚本 …...

用Java实现01背包问题 用贪心算法

贪心算法不是解决01背包问题的有效方法,因为贪心算法只能保证得到一个近似最优解,而无法保证得到最优解。因此,我们需要使用动态规划来解决01背包问题。以下是使用Java实现的动态规划解法: public class KnapsackProblem {public…...

JUC并发编程-8锁现象

5. 8锁现象 如何判断锁的是谁!锁到底锁的是谁? 锁会锁住:对象、Class 深刻理解我们的锁 问题1 两个同步方法,先执行发短信还是打电话 public class dome01 {public static void main(String[] args) {Phone phone new Phon…...

集美大学“第15届蓝桥杯大赛(软件类)“校内选拔赛 D矩阵选数

经典的状态压缩DP int dp[15][(1<<14)10]; int a[15][15]; void solve() {//dp[i][st]考虑到了第i行 并且当前考虑完第i行以后的选择状态是st的所有方案中的最大值for(int i1;i<13;i)for(int j1;j<13;j)cin>>a[i][j];for(int i1;i<13;i){for(int j0;j<…...

Android System Service系统服务--1

因为工作中经常需要解决一些framework层的问题&#xff0c;而framework层功能一般都是system service 的代理stub&#xff0c;然后封装相关接口&#xff0c;并提供给APP层使用&#xff0c;system service则在不同的进程中运行&#xff0c;这样实现了分层&#xff0c;隔离&#…...

【RT-DETR有效改进】华为 | Ghostnetv1一种专为移动端设计的特征提取网络

前言 大家好&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持ResNet32、ResNet101和PP…...

45个经典Linux面试题!赶紧收藏!

问题一&#xff1a; 绝对路径用什么符号表示&#xff1f;当前目录、上层目录用什么表示&#xff1f;主目录用什么表示? 切换目录用什么命令&#xff1f; 答案&#xff1a;绝对路径&#xff1a;如/etc/init.d当前目录和上层目录&#xff1a;./ …/主目录&#xff1a;~/切换目…...

将字符串中可能被视为正则表达式的特殊字符进行转义re.escape()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将字符串中可能被视为 正则表达式的特殊字符 进行转义 re.escape() [太阳]选择题 请问以下代码最后输出的结果是&#xff1f; import re s [a-z] print("【显示】s ",s) print(&q…...

C语言:函数指针的使用

在C语言中&#xff0c;函数指针是指向函数的指针变量。它可以存储函数的地址&#xff0c;使得可以通过该指针来调用函数。以下是函数指针的基本概念和用法&#xff1a; 一、基本概念&#xff1a; 声明函数指针&#xff1a; returnType (*pointerName)(parameterTypes); 这里 r…...

「实战应用」如何用DHTMLX Gantt构建类似JIRA式的项目路线图(二)

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求&#xff0c;是最完善的甘特图图表库。 在web项目中使用DHTMLX Gantt时&#xff0c;开发人员经常需要满足与UI外观相关的各种需求。因此他们必须确定JavaScript甘特图库的…...

Webpack5入门到原理18:Plugin 原理

Plugin 的作用 通过插件我们可以扩展 webpack&#xff0c;加入自定义的构建行为&#xff0c;使 webpack 可以执行更广泛的任务&#xff0c;拥有更强的构建能力。 Plugin 工作原理 webpack 就像一条生产线&#xff0c;要经过一系列处理流程后才能将源文件转换成输出结果。 这条…...

PWM之舵机

舵机又称直流电机&#xff0c;如下图 本节承接上节&#xff0c;具体的PWM技术已经在上一节讲的很详细了&#xff0c;本节就不再讲了&#xff0c;那么我们的重点就放在直流电机的工作原理上了。 一、工作原理 我们研究直流电机&#xff0c;主要式研究直流电机旋转速度的调节&a…...

Python并发与多线程:IO并发(阻塞IO、非阻塞IO、IO多路复用、异步IO)

在Python中&#xff0c;有多种处理并发的方式&#xff0c;其中之一就是使用多线程进行IO并发操作。在IO操作中&#xff0c;有四种常见的方式&#xff1a;阻塞IO、非阻塞IO、IO多路复用和异步IO。 阻塞IO&#xff08;Blocking IO&#xff09;&#xff1a;当执行一个IO操作时&…...

React16源码: React中的IndeterminateComponent的源码实现

IndeterminateComponent 1 &#xff09;概述 这是一个比较特殊的component的类型&#xff0c; 就是还没有被指定类型的component在一个fibrer被创建的时候&#xff0c;它的tag可能会是 IndeterminateComponent在 packages/react-reconciler/src/ReactFiber.js 中&#xff0c;有…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

算术操作符与类型转换:从基础到精通

目录 前言&#xff1a;从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符&#xff1a;、-、*、/、% 赋值操作符&#xff1a;和复合赋值 单⽬操作符&#xff1a;、--、、- 前言&#xff1a;从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...

TCP/IP 网络编程 | 服务端 客户端的封装

设计模式 文章目录 设计模式一、socket.h 接口&#xff08;interface&#xff09;二、socket.cpp 实现&#xff08;implementation&#xff09;三、server.cpp 使用封装&#xff08;main 函数&#xff09;四、client.cpp 使用封装&#xff08;main 函数&#xff09;五、退出方法…...