一个视图函数可以绑定多个 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开发实战:入门、进阶与原理解析》 学习笔记的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  3. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  4. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  5. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  6. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  7. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  8. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  9. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

  10. ucos实时操作系统学习笔记——任务间通信(消息)

    ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...

随机推荐

  1. springboot热部署JRebel插件

    激活参考:https://www.52pojie.cn/thread-906163-1-1.html 最后设置为离线,不然每次启动要重新激活 环境idea是2018.1.1版本 JRebel是最新版2 ...

  2. python实践项目十:zipfile模块-将一个文件夹备份到一个 ZIP 文件

    描述:将指定路径下的某文件夹备份到一个zip文件 代码: #!/usr/bin/python # -*- coding: UTF-8 -*- # backupToZip - Copies an ent ...

  3. windows下大数据开发环境搭建(1)——Java环境搭建

    一.Java 8下载 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载之后 ...

  4. vue中$router以及$route的使用

    路由基本概念 route,它是一条路由. { path: '/home', component: Home } routes,是一组路由. const routes = [ { path: '/hom ...

  5. Apache Kafka Producer For Beginners

    在我们上一篇Kafka教程中,我们讨论了Kafka Cluster.今天,我们将通过示例讨论Kafka Producer.此外,我们将看到KafkaProducer API和Producer API. ...

  6. django RetrieveModelMixin 查询字段替换

    mixins 中RetrieveModelMixin 获取当个实例 其中的主键pk获取,可以通过lookup_field 如:要换成用username字段进行查询 注:替换的字段要有唯一约束 look ...

  7. flask框架(五)——支持正则写法、模板用法、请求响应、session

    如果用正则的话,我们要用自定义的路由. 1导入from werkzeug.routing import BaseConverter 2我先要写一个类,然后继承BaseConverter,然后实现__i ...

  8. RabbitMQ学习记录1

    前言 我是在解决分布式事务的一致性问题时了解到RabbitMQ的,当时主要是要基于RabbitMQ来实现我们分布式系统之间对有事务可靠性要求的系统间通信的.关于分布式事务一致性问题及其常见的解决方案, ...

  9. gitlab-runner 的 executors 之 docker

    gitlab-runner 的 executors 之 docker GitLab Runner 实现了许多执行程序,可用于在不同的场景中运行构建.所有执行程序分别为: SSH Shell Paral ...

  10. java List分组和排序处理

    在一些应用中,需要将List中的对象按某种情况分组或者排序处理.做个小结如下: 1. 如一个List中存放了ProductDoing对象,productDoing对象有rawTypeId 现在要求将r ...