1.

flask--轻量级Web开发框架

2.

Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL

3. Web程序框架的意义:
  用于搭建Web应用程序
  免去不同Web应用相同代码部分的重复编写,只需关心Web应用核心的业务逻辑实现
4. Web应用程序的本质:
  接收并解析HTTP请求,获取具体的请求信息
  处理本次HTTP请求,即完成本次请求的业务逻辑处理
  构造并返回处理结果——HTTP响应
5.使用框架的优点:
  稳定性和可扩展性强
  可以降低开发难度,提高开发效率。
  总结一句话:避免重复造轮子
6.常用的flask扩展包:
  Flask-SQLalchemy:操作数据库;
  Flask-script:插入脚本;
  Flask-migrate:管理迁移数据库;
  Flask-Session:Session存储方式指定;
  Flask-WTF:表单;
  Flask-Mail:邮件;
  Flask-Bable:提供国际化和本地化支持,翻译;
  Flask-Login:认证用户状态;
  Flask-OpenID:认证;
  Flask-RESTful:开发REST API的工具;
  Flask-Bootstrap:集成前端Twitter Bootstrap框架;
  Flask-Moment:本地化日期和时间;
  Flask-Admin:简单而可扩展的管理接口的框架
7.
  安装flask:pip install Flask
  导包:from flask import Flask
8.web应用处理流程:
  发送请求---后台接收参数---处理逻辑---解析模板---给出响应
9.引入配置文件的三种方式:
  app.config.from_pyfile('config.ini')
  app.config.from_envvar('appconfig')
  from Config import Config
10.
  开启调用模式:debug=True
11.关于路由说法正确的是:
  以装饰器的方式引入@
  可以传递参数
  可以指定请求方式,post、get、put
  作用:使网站可以跳转多个网址,通过路由解析到不同的页面
12.
请求进行测试使用的工具是:postman

13.四个勾子函数:

  before_first_requst  第一次请求前

  before_request  每一次请求前

  after_request   每次请求之后

  teardown_request  捕获异常

14.捕获状态码为404的异常:

  @app.errorhandler(404)

  def server_error(e):

    return '您请求的页面不存在'

15.session和cookie的区别:

  session:存储在服务端,安全性高,生命周期随着浏览器关闭而消亡

  cookie:存储在客户端,容易被伪造,可以设置存储时长

16.post和get的区别:

  1. 从字面意思和HTTP的规范来看,GET用于获取资源信息而POST是用来更新资源信息。
  2. GET提交请求的数据实体会放在URL的后面,用?来分割,参数用&连接。例:/index.html?name=wang&login=1
  3. GET提交的数据长度是有限制的,因为URL长度有限制,具体的长度限制视浏览器而定。而POST没有。
  4. GET提交的数据不安全,因为参数都会暴露在URL上。

17.flask的两大核心:

  Werkzeug和Jinja2

  Werkzeug实现路由、调试和Web服务器网关接口,是一个遵循WSGI协议的python函数库

  Jinja2实现了模板

18.routing模块内部有:

  Rule类:用来构造不同的URL模式的对象,路由URL规则

  Map类:存储所有的URL规则和一些配置参数

  BaseConverter的子类:负责定义匹配规则

  MapAdapter类:负责协调Rule做具体的匹配的工作
19.上下文的分类及其作用:

  请求上下文:保存了客户端和服务器交互的数据
  应用上下文:flask 应用程序运行过程中,保存的一些配置信息,比如程序名、数据库连接、应用信息等

20.request的属性:

21.状态保持的两种方法:

  cookie、session

22.关于flask过滤器的正确的说法:

  过滤去本质就是函数

  格式化输出变量的值

  改变变量的显示方式

23.

  flask的模板渲染函数是:render_template

24.使用模板的意义:

  前后端分离

  提高开发效率

  代码清晰度高

  耦合度低

25.宏的意义:

  提高效率

  能够复用

  避免重用

26.简述继承和包含:

  包含实际上是指把网页模板组件化,可以包含任意需要的页面

  继承与包含的意义相悖,它可以继承父模板的局部页面

27.flask创建接口的流程:

  路由指定method属性

  import jsonfy

  将数据以json格式返回前端

28.表单组成的三个部分:

  域、按钮、标签

29.简述csrf:

  csrf是一种依赖web浏览器的,被混淆过得代理人攻击deputy attact

30.csrf常见的属性:

  依靠用户标识危害网站

  利用网站对用户标识的信任

  欺骗用户的浏览器发送http请求给目标站点

  另外可以通过img标签等会触发一个get请求,可以利用它来实现csrf攻击

31.设置数据库连接池大小的是:SQLALchemy_pool_size

32.对ORM的理解:

  ORM 全拼Object-Relation Mapping.中文意为 对象-关系映射.主要实现模型对象到关系数据库数据的映射.

  优点:只需要面向对象编程, 不需要面向数据库编写代码.
       对数据库的操作都转化成对类属性和方法的操作.
       不用编写各种数据库的sql语句.

  缺点:相比较直接使用SQL语句操作数据库,有性能损失.
     根据对象的操作转换成SQL语句,根据查询的结果转化成对象, 在映射过程中有性能损失.

33.常用的SQLAlchemy字段类型:

34.常用的SQLAlchemy列选项:

35.常用的SQLAlchemy关系选项:

36.用SQLALchemy创建表:

  from flask import Flask
  from flask_sqlalchemy import SQLAlchemy
  app = Flask(__name__)
  app.config.from_pyfile('config.ini')
  db = SQLAlchemy(app)
  class User(db.Model):
        __tablename__="user"
        id = db.Column(db.Integer,primary_key=True)
        name = db.Column(db.String(30))
        gender = db.Column(db.Enum('男','女'))
        age = db.Column(db.Integer)
        birthday = db.Column(db.DateTime)
# 创建表
db.create_all()

37.SQLALchemy向数据库添加一条数据:

  @app.route("/add")
  def add_mes():
        user= User(name='张',gender='女',age=20,birthday='2010-11-11 01:20:18') 
    # db.session.add(user)

38.SQLALchemy修改更新表数据

  @app.route('/update')
  def update_mes():
        User.query.filter_by(name='张3').update({'name':'小花','age':1})
     return 'ok'

39.删除数据

  @app.route('/delete')
  def delete_mes():
        User.query.filter_by(name='小花').delete()
     return 'ok'

40.删表

  db.drop_all()

41.数据库迁移:

  pip  install  flask-migrate

  导入模块
  from flask_migrate import Migrate,MigrateCommand
  from flask_script import Manager

  注册实例
  #第一个参数是Flask的实例,第二个参数是Sqlalchemy数据库实例
  migrate = Migrate(app,db)
  #manager是Flask-Script的实例,这条语句在flask-Script中添加一个db命令
  manager.add_command('db',MigrateCommand)

  5.创建迁移仓库
   #这个命令会创建migrations文件夹,所有迁移文件都放在里面。
  python database.py db init
  6.创建迁移脚本
  python database.py db migrate -m 'initial migration'
  7.更新数据库
  python database.py db upgrade
  8.返回以前的版本
  可以根据history命令找到版本号,然后传给downgrade命令:
  python app.py db history
  输出格式:<base> ->  版本号 (head), initial migration
  回滚到指定版本
  python app.py db downgrade 版本号

42.蓝图

  from flask import Blueprint

43.blueprint的属性:

    1.一个应用可以具有多个Blueprint
     2.可以将一个Blueprint注册到任何一个未使用的URL下比如 “/”、“/sample”或者子域名
     3.在一个应用中,一个模块可以注册多次
     4.Blueprint可以单独具有自己的模板、静态文件或者其它的通用操作方法,它并不是必须要实现应用的视图和函数的
     5.在一个应用初始化时,就应该要注册需要使用的Blueprint
  但是一个Blueprint并不是一个完整的应用,它不能独立于应用运行,而必须要注册到某一个应用中。

44.使用蓝图可以分为三个步骤:

  1,创建一个蓝图对象
  admin=Blueprint('admin',__name__)
  2,在这个蓝图对象上进行操作,注册路由,指定静态文件夹,注册模版过滤器
  @admin.route('/')
  def admin_home():
        return 'admin_home'
  3,在应用对象上注册这个蓝图对象
  app.register_blueprint(admin,url\_prefix='/admin')
  当这个应用启动后,通过/admin/可以访问到蓝图中定义的视图函数
45.简述蓝图的运行机制:
  蓝图是保存了一组将来可以在应用对象上执行的操作,注册路由就是一种操作
  当在应用对象上调用 route 装饰器注册路由时,这个操作将修改对象的url_map路由表
  然而,蓝图对象根本没有路由表,当我们在蓝图对象上调用route装饰器注册路由时,它只是在内部的一个延迟操作记录列表defered_functions中添加了一个项
  当执行应用对象的 register_blueprint() 方法时,应用对象将从蓝图对象的 defered_functions 列表中取出每一项,并以自身作为参数执行该匿名函数,即调用应用对象的 add_url_rule() 方          法,这将真正的修改应用对象的路由表

 

框架——flask知识点回顾的更多相关文章

  1. Java进阶(二十六)公司项目开发知识点回顾

    公司项目开发知识点回顾 前言 "拿来主义"在某些时候并不是最佳选择,尤其是当自己遇到问题的时候,毫无头绪. 在一次实验过程中,需要实现数据库的CRUD操作.由于之前项目开发过程中, ...

  2. flask框架----flask基础

    知识点回顾 1.flask依赖wsgi,实现wsgi的模块:wsgiref,werkzeug,uwsgi 2.实例化Flask对象,里面是有参数的 app = Flask(__name__,templ ...

  3. django知识点回顾与补充

    一.django知识点回顾 1.Cookie操作 - 客户端本地存储的键值对 2.Session操作 - 3.URL路由 - /index -> view.函数 4.MTV 5.View中返回方 ...

  4. Spring学习笔记:Spring整合Mybatis(mybatis-spring.jar)(一:知识点回顾)

    一.知识点回顾 1.Mybatis环境搭建(DAO层的实现)(使用maven项目管理工具) 需要引入的依赖包: <!-- 单元测试junit --> <dependency> ...

  5. 面试前的准备---C#知识点回顾----03

    经过一天的奔波,喜忧参半,不细表 再回看下标题,C#知识点回顾 再看下内容,数据库3NF 原谅我这个标题党 今天继续回忆 1.HTTP中Post和Get区别 这忒简单了吧,大家是不是感觉到兴奋了,长舒 ...

  6. Spring知识点回顾(08)spring aware

    Spring知识点回顾(08)spring aware BeanNameAware 获得容器中的bean名称 BeanFactoryAware 获得当前的bean factory Applicatio ...

  7. Spring知识点回顾(07)事件发布和监听

    Spring知识点回顾(07)事件发布和监听 1.DemoEvent extends ApplicationEvent { public DemoEvent(Object source, String ...

  8. Spring知识点回顾(01)Java Config

    Spring知识点回顾(01) 一.Java Config 1.服务和服务注入 2.Java 注解 :功能更强一些 3.测试验证 二.注解注入 1.服务和服务注入 2.配置加载 3.测试验证 三.总结 ...

  9. $Django Rest Framework-认证组件,权限组件 知识点回顾choices,on_delete

    一 小知识点回顾 #orm class UserInfo (models.Model): id = models.AutoField (primary_key=True) name = models. ...

随机推荐

  1. windows下JDK环境配置与Android SDK环境配置

    一.JDK环境配置1.配置变量名:JAVA_HOME变量值:jdk安装的绝对路径. 变量名:Path(在系统变量中找到并选中Path点击下面的编辑按钮,不要删除原本变量值中的任何一个字母,在这个变量值 ...

  2. IE8 下更改input[file] file文件选择框样式

    1/使用绝对定位,将文件选择框固定,并且隐藏该选择框(文件选择框可调整宽高),设置该文件选择框 z-index 调高 比如 999. 2/使用任意标签,调整为与上面选择框相同宽高,目的为使用该标签样式 ...

  3. go与c语言的互操作

    https://tonybai.com/2012/09/26/interoperability-between-go-and-c/ https://tonybai.com/2016/02/21/som ...

  4. MySQL-[SIGNAL/RESIGNAL/GET DIAGNOSTICS]的使用

    最近在做 SQL Server 到 MySQL 的迁移(migration),相较于对表和数据的迁移,最令人犯难的还是在功能性存储过程脚本的改写转换(convert),虽说 MySQL 如今是蓬勃发展 ...

  5. JS 一张图理解prototype、proto和constructor的关系

    转载于原文地址:https://www.cnblogs.com/xiaohuochai/p/5721552.html(感谢大神的总结) 前面的话 javascript里的关系又多又乱.作用域链是一种单 ...

  6. mac iterm 提示符序列调整

    mac终端提示符显示绝对路径太长了,能不能提示符不显示全路径呢?自定义提示符前缀呢? mac终端命令换行覆盖问题也顺带解决. 编辑~/.bash_profile export PS1='' 参数: 序 ...

  7. Spark SQL 之 Join 实现

    原文地址:Spark SQL 之 Join 实现 Spark SQL 之 Join 实现 涂小刚 2017-07-19 217标签: spark , 数据库 Join作为SQL中一个重要语法特性,几乎 ...

  8. GitLab上传项目到新的分支

    多人协同开发,GitLab上的group仓库里的master分支作为开发分支(最终从dev提交的代码),dev分支作为每个人的代码测试后合并的分支,每个人需要定期merge request自己的分支到 ...

  9. DOM操作的概念

    ////dom 操作//核心思想:找到元素 操作元素//js 找元素:// document.getElementById(dd); 唯一确定// 返回的都是数组 数组元素是元素对象// docume ...

  10. Oracle课程档案,第十天

    用户管理 Authentication: 身份验证 AAA:Authentication: 身份验证 Authorization: 权限管理 Audition: 审计 grant:授权 unset:撤 ...