Flask狼书笔记 | 07_留言板
文章目录
- 7 留言板
- 7.1 使用包组织代码
- 7.2 Web开发流程
- 7.3 使用Bootstrap-Flask
- 7.4 Flask-Moment本地化日期和时间
- 7.5 使用Faker生成虚拟数据
- 7.6 Flask_DebugToolbar调试程序
- 7.7 Flask配置的两种组织形式
- 小结

7 留言板
这是一个简单的程序,涉及到的大部分是之前所学习到的基础知识。新涉及的python包:
- BootStrap-Flask,Flask-Moment,Faker,Flask-Debug Toolbar。
Git:
git checkout package # 签出版本
git tag -n # 列出项目包含的所有标签
7.1 使用包组织代码
将大量代码放到app.py一个文件里,代码的管理会不太方便,可读性也差。本节将使用一种新的代码结构
- sayhello- __init__.py- templates/- static/- views.py- forms.py- models.py- settings.py
- manage.py
- .flaskenv
...
导入配置:可以从python文件导入
app.config.from_pyfile('settings.py')
7.2 Web开发流程
一个Web程序通常的开发流程如下:
- 分析需求
- 设计程序功能
- 开发与测试的迭代
- 调试和性能等专项测试
- 部署上线
- 运维与营销
目前我的开发流程是不规范的,喜欢早早地开始写代码。
1、前端开发流程:草图 --> 交互式原型图 --> 前端页面。
原型设计工具有Axure RP,Mockplus。(有点感觉原型设计这一步多余,对于我这种个人开发而言)
2、后端开发流程:数据建模 --> 表单类 --> 视图函数 --> 模板。
(我经常先写的模板)
URL片段:如
#bottom,可以实现页内位置跳跃。
7.3 使用Bootstrap-Flask
内置了可以快速渲染Bootstrap样式HTML组件的宏,并提供了内置的Bootstrap资源。(p206)
1、扩展初始化
from flask_bootstrap import Bootstrap
bootstrap = Bootstrap(app)
2、加载资源文件
在FLASK_ENV为development时,将自动使用本地资源。
BOOTSTRAP_SERVE_LOCAL=True # 设置使用本地资源
{{ bootstrap.load_css() }}
{{ bootstrap.load_js() }}
CDN:Content Delovery Network,内容分发网络
3、快捷渲染表单
如宏render_form()可以快捷渲染整个表单。
<div class="hello-form">{{ render_form(form), action=request.full_path }}
</div>
疑惑:这个
action怎么在小括号外面,没有输错吗?
render_form常用参数:(p208)
Bootstrap-Flask内置的常用宏:(p208)
7.4 Flask-Moment本地化日期和时间
服务器提供纯正的时间(native time),即不包含时区信息的时间戳,如datetime.utcnow()。然后再浏览器通过JavaScript显示本地的时间。
1、加载资源
需要从Moment.js官网下载资源到static文件夹(如果不从CDN加载资源)。
{{ moment.include_moment() }} {# 默认从cdn加载资源 #}
{{ moment.include_moment(local_js=url_for(...)) }} {# 从本地加载 #}
还可以设置显示时间的语言(p210)。
2、功能
Moment.js提供了多种时间格式化的方式(p211)
还支持输出相对时间(p211)
7.5 使用Faker生成虚拟数据
可以使用对于的虚拟数据类别来获取虚拟数据,每次调用可以得到不同的结果。此外,它也提供了中文数据支持。
7.6 Flask_DebugToolbar调试程序
可以用来查看请求的SQL语句、配置选项、资源加载情况等信息(?用来干嘛)。也可以帮助进行性能分析。
7.7 Flask配置的两种组织形式
再开发和部署时通常需要不同的配置,例如需要连接到不同的数据库。建议通过环境变量保存配置,以便分离配置和程序。环境变量可以存储在.flaskenv或者.env中。
Flask支持建立一个instance文件夹(实例文件夹,我也不知道为什么叫这个名字),用来存放配置。然后,你可以用它来覆盖通用配置(重复配置项后者覆盖前者)。
app = Flask(__name__, instance_relative_config=True)
app.config_from_object('config') # 通用配置
app.config.from_pyfile('config.py') # instance文件夹下的配置
其中instance_relative_config参数告诉Flask我们配置文件的路径是相对于instance文件夹的。
注:
flask_shell命令会输出instance文件夹合适的位置。疑惑:这里的通用配置是从哪里加载的?从“环境变量”吗?
小结
这一节的内容确实比较简单,介绍了一些项目开发过程中的流程和工具。最后的SayHello项目,页面给人一种简洁而美观之感,这是我所做不到的。(常常感觉自己写出来的页面有点丑)
大部分工具我暂时都还没有去尝试它们,看以后什么时候会需要吧。
相关文章:
Flask狼书笔记 | 07_留言板
文章目录 7 留言板7.1 使用包组织代码7.2 Web开发流程7.3 使用Bootstrap-Flask7.4 Flask-Moment本地化日期和时间7.5 使用Faker生成虚拟数据7.6 Flask_DebugToolbar调试程序7.7 Flask配置的两种组织形式小结 7 留言板 这是一个简单的程序,涉及到的大部分是之前所学…...
文件导入之Validation校验List对象数组
背景: 我们的接口是一个List对象,对象里面的数据基本都有一些基础数据校验的注解,我们怎么样才能校验这些基础规则呢? 我们在导入excel文件进行数据录入的时候,数据录入也有基础的校验规则,这个时候我们又…...
【Linux】文件系统
磁盘及文件系统 文件的增删查改 重新认识目录 目录是文件嘛? 是的。 目录有iNode嘛? 有 目录有内容嘛? 有 任何一个文件,一定在一个目录内部,所以一个目录的内容是什么? 需要数据块,目录的数据…...
1.5 空间中的平面与直线
空间中的平面和直线 知识点1 平面方程 1.平面的法向量与法式 定义1 若向量n 垂直与平面N,则称向量n为平面N的法向量。 设一平面通过一直点 M 0 ( x 0 , y 0 , z 0 ) M_0(x_0,y_0,z_0) M0(x0,y0,z0)求垂直于非零向量 n ⃗ \vec{n} n (A,B,C),求改平面N的…...
【深度学习】实验06 使用TensorFlow完成线性回归
文章目录 使用TensorFlow完成线性回归1. 导入TensorFlow库2. 构造数据集3. 定义基本模型4. 训练模型5. 线性回归图 附:系列文章 使用TensorFlow完成线性回归 TensorFlow是由Google开发的一个开源的机器学习框架。它可以让开发者更加轻松地构建和训练深度学习模型&a…...
2023国赛 C题论文 蔬菜类商品自动定价与补货策略
因为一些不可抗力,下面仅展示小部分论文,其余看文末 一、问题重述 在生鲜超市管理领域,涉及一系列复杂问题,包括供应链管理、定价策略以及市场需求分析等方面。以蔬菜类商品为案例,这些商品在生鲜商超中具有较短的保…...
使用 【jacoco】对基于 SpringBoot 和 Dubbo RPC 的项目生成测试覆盖率报告:实践+原理
基于 Dubbo RPC 的项目中有一个提供者项目backend、一个消费者项目gateway、以及注册中心nacos。本篇文章记录在windows本地对该框架的测试过程,以及介绍jacoco的基本原理 测试过程 官网下载安装包解压到本地,https://www.jacoco.org/jacoco/ 只需要用…...
Mac OS合集
MacOS 10.15os 提取码:u12a 如不能点击跳转请复制此链接到浏览器:https://pan.baidu.com/s/1UgPNYprBgJrc25v5ushWxQ?pwdu12a MacOS 11.0 提取码:y77y 如不能点击跳转请复制此链接到浏览器打开:https://pan.baidu.com/s/1srmibmCi2T7UVGvHkCzGKA?pwdy7…...
算法之位运算
前言 位运算在我们的学习中占有很重要的地位,从二进制中数的存储等都需要我们进行位运算 一、位运算复习 1.位运算复习 按位与(&):如果两个相应的二进制位都为1,则该位的结果值才为1,否则为0 按位或( | ):如果…...
flask使用Flask-Mail实现邮件发送
Flask-Mail可以实现邮件的发送,并且可以和 Flask 集成,让我们更方便地实现此功能。 1、安装 使用pip安装: $ pip install Flask-Mail或下载源码安装: $ git clone https://github.com/mattupstate/flask-mail.git $ cd flask-…...
React refers to UMD global, but the current file is a module vite初始化react项目
vite搭建react项目 初始化项目 npm create vite 在执行完上面的命令后,npm 首先会自动下载create-vite这个第三方包,然后执行这个包中的项目初始化逻辑。输入项目名称之后按下回车,此时需要选择构建的前端框架: ✔ Project na…...
vscode 调试 ROS2
1、在下列目录同层级找到.vscode文件夹 . ├── build ├── install ├── log └── src 2、 安装ros插件 3、创建tasks.json文件,添加下列内容 //代替命令行进行编译 {"version": "2.0.0","tasks": [{"label": &…...
TuyaOS开发学习笔记(2)——NB-IoT开发SDK架构、运行流程
一、SDK架构 1.1 架构框图 基于 TuyaOS 系统,可以裁剪得到的适用于 NB-IoT 协议产品接入的 SDK。SDK 将设备配网、上下行数据通信、产测授权、固件 OTA 升级等接口进行封装,并提供相关函数。 1.2 目录结构 1.2.1 TuyaOS目录说明 adapter:T…...
Qt应用开发(基础篇)——普通按钮类 QPushButton QCommandLinkButton
一、前言 QPushButton类继承于QAbstractButton,是一个命令按钮的小部件。 按钮基类 QAbstractButton 按钮或者命令按钮是所有图形界面框架最常见的部件,当按下按钮的时候触发命令、执行某些操作或者回答一个问题,典型的按钮有OK,A…...
Data Structures Fan(cf)
考察异或运算以及前缀和 题意大概:给你一个长度为n的a数组,一个长度为n的01字符串,会询问q次 当x的值为1 给出 l r 将 l r 区间中的0 改变为1,1改变为0 。当x的值为2是 若随后的数为0 则输出当前字符串中 是0 的a数组中的数异或 …...
BIOS < UEFI
Basic Input Output System (BIOS) Unified Extensible Firmware Interface (UEFI)...
微信最新更新隐私策略(2023-08-15)
1、manifest.json 配置修改 在mp-weixin: 参数修改(没有就添加) "__usePrivacyCheck__": true, ***2、注意 微信开发者工具调整 不然一直报错 找不到 getPrivacySetting 废话不多说 上代码 3、 编辑首页 或者用户授权界面 <uni-popup…...
Java中xml转javaBean
Java中xml转javaBean maven坐标 <dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId><version>2.13.4</version></dependency>代码测试 import cn.hutool.js…...
Spring Boot集成JPA和ClickHouse数据库
简介 Spring Boot是一个用于创建独立的、基于Spring的应用程序的框架。它具有快速开发特性,可以大大减少开发人员的工作量。JPA(Java Persistence API)是Java中处理关系型数据库持久化的标准规范,而ClickHouse是一个高性能、分布…...
Hadoop生态圈中的Hive数据仓库技术
Hadoop生态圈中的Hive数据仓库技术 一、Hive数据仓库的基本概念二、Hive的架构组成三、Hive和数据库的区别四、Hive的安装部署五、Hive的基本使用六、Hive的元数据库的配置问题七、Hive的相关配置项八、Hive的基本使用方式1、Hive的命令行客户端的使用2、使用hiveserver2方法操…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...
