在应用启动过程中, Flask 会创建一个 Python 的 logging.Logger 类实例,并将其附属到应用实例上,通过 app.logger 访问

============================

容器映像经常使用 Alpine Linux,因为它体量小。
============================

在dockerfile里创建用户,并切换到此用户。

adduser 命令的 -D 参数禁止命令提示用户输入密码
USER 命令选择以哪个用户的身份运行容器,以及 Dockerfile 文件中后续的命令。 Docker 默认使用 root 用户

====================

将宿主系统的 8000 端口映射到容器的 5000 端口上
============================

=================================

Compose 能按正确的顺序启动 mysql 和 flasky 容器,因为它能从 flasky links 键检测到二者之间的依赖关系。 MySQL 可能要花几秒钟才能启动,但是 Compose 不会等待。设
计分布式系统时,连接外部服务器时一般都会多试几次

===============================

1 启动应用:docker-compose up -d --build     【--build 选项指明,应该在启动应用之前构建 镜像】
2 Compose 把所有容器的日志合并为一个流,可以使用 docker-compose logs 命令查看

3 如果你想持续监控日志流的话,使用 docker-compose logs -f
4 docker-compose ps 命令输出运行中各容器的概况和状态
5 若想停止应用,使用 docker-compose down 命令。如果想把容器停止并删掉,使用 dockercompose rm --stop --force 命令。
6 可以使用 docker volume ls命令查看系统分配的全部卷。若想删除某个不再使用的卷,使用 docker volume rm

7docker system prune --volumes 命令。这个命令会删除所有不再使用的映像或卷,以及停止后依然在系统中的容器

8 手动起的镜像在容器异常退出了,容器日志查看,安全性和伸缩性上还有局限性,不方便管理,此时可以使用Kubernetes 进行更精巧的编排
=========================

pip freeze 命令查看虚拟环境中安装了哪些包
Flask 支持在路由中使用 string、int、 float 和 path 类型。 path 类型是一种特殊的字符串,与 string 类型不同的是,它可以包含正斜线

==============================
为了避免大量可有可无的参数把视图函数弄得一团糟, Flask 使用上下文临时把某些对象(如request)变为全局可访问 。Flask 使用上下文让特定的变量在一个线程中全局可
访问,与此同时却不会干扰其他线程。

Flask 在分派请求之前激活(或推送)应用和请求上下文,请求处理完成后再将其删除 。如果使用这些变量时没有激活应用上
下文或请求上下文,就会导致错误

===================
request 的常用属性和方法

============================

在请求钩子函数和视图函数之间共享数据一般使用上下文全局变量 g

===============================

如果视图函数返回的响应需要使用不同的状态码,可以把数字代码作为第二个返回值,添加到响应文本之后

==============================

Flask 提供的 render_template() 函数把 Jinja2 模板引擎集成到了应用中。这个函数的第一个参数是模板的文件名,随后的参数都是键 – 值对,表示模板中变量对应的具体值。

===============================

变量的值可以使用过滤器修改。过滤器添加在变量名之后,二者之间以竖线分隔。例如,下述模板把 name 变量的值变成首字母大写的形式: Hello, {{ name|capitalize }}

====================

1、使用的 {{ name }} 结构表示一个变量
2、{% if condition %}...{% else %}...{% endif %}

3、

4 Jinja2 还支持宏。宏类似于 Python 代码中的函数

5 导入宏

6 Jinja2 使用 block 和 endblock 指令在基模板中定义内容区块。

7 模板继承:

如果基模板和衍生模板中的同名区块中都有内容,衍生模板中的内容将显示出来。在衍生模板的区块里可以调用 super(),引用基模板中同名区块里的内容。

8

9 url_for('index') 得到的结果是 /,即应用的根 URL。

调用 url_for('index', _external=True)返回的则是绝对地址,在这个示例中是 http://localhost:5000/。

10  static是 Flask 为了支持静态文件而自动添加的,这个特殊路由的 URL 是 /static/<filename>。
例如,调用 url_for('static', filename='css/styles.css', _external=True) 得到的结果是 http://localhost:5000/static/css/styles.css

11 app.config 字典可用于存储 Flask、扩展和应用自身的配置变量。使用标准的字典句法就能把配置添加到 app.config 对象中。

12

13 flash() 函数可实现闪现效果 ,仅调用 flash() 函数并不能把消息显示出来,应用的模板必须渲染这些消息 ,Flask 把 get_flashed_
messages() 函数开放给模板,用于获取并渲染闪现消息

===============================

有了蓝图,就可以在flask应用还没有被实例化时,创建视图函数了。在蓝本中定义的路由和错误处理程序处于休眠状态,直
到蓝本注册到应用上之后,它们才真正成为应用的一部分

跨蓝本的重定向必须使用带有蓝本名的完全限定端点名
=================================

pip freeze >requirements.txt
pip install -r requirements.txt

===============

一般在url中加上版本号(/api/v1.0/posts/ ),在一段时间内,服务器要同时处理 v1.1 和 v1.0 这两个版本的 URL

flask读书笔记-flask web开发的更多相关文章

  1. Struts2技术内幕 读书笔记二 web开发的基本模式

    最佳实践 在讨论基本模式之前,我们先说说一个词:最佳实践 任何程序的编写都得遵循一个特定的规范.这种规范有约定俗称的例如:包名全小写,类名每个单词第一个字母大写等等等等;另外还有一些需要我们严格遵守的 ...

  2. 读书笔记--大规模web服务开发技术

    总评        这本书是日本一个叫hatena的大型网站的CTO写的,通过hatena网站从小到大的演进来反应一个web系统从小到大过程中的各种系统和技术架构变迁,比较接地气.      书的内容 ...

  3. flask读书笔记

    学习flask的一个很好的网站:http://www.pythondoc.com/flask-mega-tutorial/helloworld.html ======================= ...

  4. <读书笔记>《Web前端开发最佳实践》

    P77 P89 CSS Reset P94 给CSS样式定义排序    排序工具:CSScomb P97 什么是CSS的权重?权重是指选择符的优先级 P100 工具:Sass Less P101 框架 ...

  5. struts 2读书笔记-----struts2的开发流程

    一.将struts 2的lib文件夹下地commons-fileupload.jar.commons-io.jar.freemarker.jar.javassist.jar.ognl.jar.stru ...

  6. 《大象 Thinking in UML》读书笔记:软件开发——从现实世界到对象世界

    参考:Process-oriented vs. Object-oriented 前言 软件行业在采用OO的思想后,从一开始只对编码使用OO,到现在“分析-设计-编码”全部环节使用OO,形成了OOA.O ...

  7. 《Python Web开发实战》|百度网盘免费下载|Python Web开发

    <Python Web开发实战>|百度网盘免费下载|Python Web开发 提取码:rnz4 内容简介 这本书涵盖了Web开发的方方面面,可以分为如下部分: 1. 使用最新的Flask ...

  8. Flask Web开发读书笔记

    开篇:目前想自学Flask Web开发--基于Python,找了几本书准备啃啃,同时也会分享读书笔记.希望和大家一起进步. Flask是小型框架,可以算是微框架,但是他的功能还是比较多 Flask有三 ...

  9. Web开发Flask框架学习笔记

    Python 是一种跨平台的[计算机程序设计语言],是一种面向对象的动态类型语言,Python是纯粹的自由软件,源代码和解释器CPython遵循 GPL(GNU General Public Lice ...

随机推荐

  1. 快速了解NIO

    NIO的由来 我们都知道,在jdk1.4的时候就开始引入NIO了,它是基于Selector机制的非阻塞I/O,可以将多个异步的I/O操作集中到一个或几个线程中进行处理,目的就是为了代替阻塞I/O,提到 ...

  2. java源码 --List、Set、Collection

    List和Set都是接口,它们继承与Collection.List是有序的队列,可以用重复的元素:而Set是数学概念中的集合,不能有重复的元素.List和Set都有它们各自的实现类. 为了方便,我们抽 ...

  3. java实现带过期时间的缓存

    private static ScheduledExecutorService swapExpiredPool = new ScheduledThreadPoolExecutor(10); priva ...

  4. (转)从0移植uboot(六) _实现网络功能

    ref:https://www.cnblogs.com/xiaojiang1025/p/6500532.html 为uboot添加网卡功能可以让uboot通过tftp下载内核, 方便我们的开发, 对于 ...

  5. 如何将Linux的工程原封不动地移植到Windows上面

    习惯在Linux下进行开发.但是由于工作需要,不得不与其他使用Windows的项目组同事对接,同事要求我给出可用的程序,而我只有基于makefile的传统工程. 改动到VS工程上发现一部分头文件在Wi ...

  6. Nginx学习笔记(四):基本数据结构

    目录 Nginx的一些特点 Nginx自定义整数类型 异常机制错误处理 内存池 字符串 时间与日期 运行日志   Nginx的一些特点 高性能 采用事件驱动模型,可以无阻塞的处理海量并发连接 高稳定性 ...

  7. SQLSERVER中计算某个字段中用分隔符分割的字符的个数

    比如字段sid中用'|'分割的一些字符   a|b|c|d,需要通过sql查询出字符的个数是4. 可以使用如下脚本: SELECT LEN(sid)-LEN(REPLACE(sid,'|',''))+ ...

  8. 开发人员需求能kill杀死其它阻塞自己的会话,测试发现需要alter system权限有风险

    模拟开发人员需求,可以杀死其它阻塞自己的会话1.能有查询阻塞会话确认的权限SQL> grant select on v_$session to testa;SQL> grant selec ...

  9. 怎样绑定this

    有三种方法: 1. Function.prototype.call();  2. Function.prototype.apply();  3. Function.prototype.bind(); ...

  10. 改善C#程序的方法

    写在开头: http://www.cnblogs.com/luminji    157个建议_勘误表 一:属性 属性和方法一样.也可以是virtual和abstract. 条款2:运行时常量(read ...