《Flask Web开发实战:入门、进阶与原理解析》 学习笔记
一个视图函数可以绑定多个 URL
为了让互联网上的人都可以访问,需要安装程序的服务器有公网ip
如果过度使用扩展,在不需要 的地方引人,那么相应也会导致代码不容易维护 ,应该尽量从实际需求出发,只在需要 的时候使用扩展
flask、flask扩展、程序自己的环境变量都可以通过flask的app.config作为统一的接口来设置和获取。app.config是字典的子类,所以可以像操作字典那样使用它
session也可以像字典一样使用
g也可以像字典一样使用
配置变量可以存储在python脚本、python类和json格式的文件中


after_request 钩子和 after_this_request 钩子必须接收一个响应类对象作为 参数,并且返回同 一 个或更新后的响应对象 。
响应报文的首部包含一些关于响应和服务器的信息,这些内容由 F lask 生成 ,视图函数中返回的内容即为响应报文中的主体内容 。
视图菌数可以返回最多由 三个元素组成的元组:响应主体、状态码、首部字段 。其中首部字段可以为字典,或是两元素元组组成的列表 。
abort()函数后面不需要return,因为abort后面的代码将不会被执行
设置响应对象的格式:


在 Flask 中,如果想要在响应中添加一个 cookie , 最方便的方法是使用 Response 类提供的
set_cookie()方法 。 要使用这个方法,我们需要先使用 make_response()方法手动生成一个响应对象,
response set_cookie (’ name ’, name )
name = request . cookies . get (' name ', ’ Human ’) #从 Cookie 中获取 name值
当我们使用 session 对象添加 cookie 时,数据会使用程序的密钥对其进行签名,加密后的数据存储在一块名为 session 的 cookie 里
使用session 对象存储的 Cookie ,用户可以看到其加密后的值,但无法修改它 。 因为 session 中的内容使用密钥进行签名,一旦数据被修改,签名的值也会变化。 这样在读取时,就会验证失败
这通过 session 对象的 pop 方法删除设置的cookie
默认情况下, session cookie 会在用户关闭浏览器时删除


==========服务器推送技术,除了下表列的方法,还有websocket

为防止攻击,通过jinja的escape进行转义,即把变量标记的内容标记为文本,而不是HTML代码

常见的攻击:sql注入,跨站脚本攻击,跨站伪造请求,频繁请求
url_for生成的是相对url,若要生成绝对url,需要将_external参数设为true
MVC (Model-ViewController ,模型 - 视图-控制器)
查询字符串从问号?开始,以键值对的形式写出,多个键值对之间使用&分隔 。
获取request中的参数值,建议用get requset.args.get(’name’,’Human')
重定向回上一个页面:
redirect(requset.referrer or url_for("hello"))
redirect(requset.args.get("next"),url_for("hello"))
jinja中常用定界符:
语句:{%%}
表达式: {{}}
注释:{##}
Jinjia允许你在模板中使用大部分 Python 对象
{% if %}
{% else %}
{% endif %}
使用ORM的好处:方便切换数据库(支持多种DBMS);ORM帮忙做了些防止sql注入的工作
自己写sql的好处:灵活,快

表名生成规则:

据库和表一旦创建后,之后对模型的改动不会自动作用到实际的表中 。如采要使改动生效,最简单的方式是调用 db. drop all()方法删除数据库和表,然后再调用 db . create_a ll()方法创建
我们在创建模型类实例的时候并没有定义 id 字段的数据,这是因为主键由 SQLAlchemy 管理
一般来说,定义关系需要两步,分别是创建外键和定义关系属性。在更复杂的多对多关系中,我们还需要定义关联表来管理关系 。
水电费
《Flask Web开发实战:入门、进阶与原理解析》 学习笔记的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
- ucos实时操作系统学习笔记——任务间通信(消息)
ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...
随机推荐
- Appcrawler 参数实战经验
https://testerhome.com/topics/10574 https://yq.aliyun.com/articles/277985 https://github.com/sevenir ...
- 查看端口被哪个程序占用的DOS命令
netstat -aon | findstr 80Proto Local Address Foreign Address State PID==== ============ ============ ...
- c++基础(三)——容器
1. 顺序容器 vector和string将元素保存在连续的内存空间中.由于元素是连续存储的,由元素的下标来计算其地址是非常快速的.但是在这两种容器的中间位置添加或删除元素就非常耗时 list和for ...
- 文件和异常——python从编程入门到实践
从文件中读取数据 1. 读取整个文件 要读取文件,首先来创建一个文件: 然后打开并读取这个文件,再将其内容显示到屏幕上: file_reader.py with open('pi_digits.txt ...
- python模块知识四 包和logging日志
11.包 包:文件夹下具有__init__.py文件就是一个包,包用来管理多个模块 包的结构如下: bake ├── __init__.py ├── api ├── __init__.py ├── p ...
- day38——线程queue、事件event、协程
day38 线程queue 多线程抢占资源 只能让其串行--用到互斥锁 线程queue 队列--先进先出(FIFO) import queue q = queue.Queue(3) q.put(1) ...
- 《学渣的电子技术自学笔记》——二极管的工作频率与PN结结面积的关系
<学渣的电子技术自学笔记>--二极管的工作频率与PN结结面积的关系 书本原文 :按结构分,二极管有点接触型.面接触型和平面型三类.点接触型二极管(一般为锗管)的PN结结面积很小(结电容小) ...
- epoll_ctl函数的使用
#include <sys/epoll.h> int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);作用: ...
- Oracle 11g 总结篇2
第一部分: 字段名的别名用""括起来,如:last_name as "姓名". 去除重复:在投影的字段名前加上 distinct 就可以了. 比如:select ...
- exit status 1