《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 ...
随机推荐
- jira中使用eazyBI
参考:https://docs.eazybi.com/eazybijira/set-up-and-administer/set-up-and-administer-for-jira-server/in ...
- 基于Mac的Appium环境搭建(java)
一.jdk安装 1.下载地址 http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.安装 3.配置环境变量: ope ...
- SpringBoot + Mybatis搭建完整的项目架构
准备工作: Java开发环境 已安装 springboot 插件(STS)的 Eclipse MySQL服务 一. 创建 springboot 项目 1. 打开Eclipse --> 左上角 ...
- 【转帖】PowerPC架构:IBM的一座金矿
PowerPC架构:IBM的一座金矿 https://www.eefocus.com/mcu-dsp/365599 <处理器史话>之十五 2016-07-15 14:01 作者:付丽华预计 ...
- 为什么Apache Kafka如此受欢迎
1.目标 今天,在这个Kafka教程中,我们将学习所有Kafka功能,如可扩展性,可靠性,耐用性,这些都说明了Kafka如此受欢迎的原因.我们将详细讨论Kafka的每个功能.但在那之前让我们明白什么是 ...
- Django框架之DRF get post put delete 使用简单示例 (利用序列化反序列化)
路由配置 # 路由 from django.conf.urls import url from django.contrib import admin from app01 import views ...
- Python 实用第三方库安装方法
下面将自己学习过程中总结的Python第三方库的安装常用三种方法分享给大家,本人推荐前面两种方式.(已安装Python) 方法一:pip命令行直接安装 打开cmd命令窗口,通过命令 pip insta ...
- 一个长耗时SQL在TiDB和Mysql上的耗时测试
之前看到的TiDB和MySql的性能对比都是大量短耗时请求下的压测,单机情况下TiDB和MySql的确有些差距,不过笔者最近碰到的场景更多是sql要扫描的行数不小的情况下单sql比较耗时的问题,所以自 ...
- Nginx 添加模块
说明: 已经安装好的Nginx,需要添加一个未被编译安装的模块(以nginx-rtmp-module模块为例),则需要重新编译nginx nginx的模块是需要重新编译nginx,而不是像apache ...
- LOJ2882 JOISC2014 两个人的星座 计算几何
传送门 一件值得注意的事情是:平面上两个不相交的三角形一定会存在两条公切线 那么我们可以枚举三角形的公切线,计算有多少个三角形的公切线之一为该线,所有的答案除以2就是我们要求的答案. 考虑如何去计算有 ...