zoukankan      html  css  js  c++  java
  • 框架——flask知识点回顾

    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() 方          法,这将真正的修改应用对象的路由表
    
    
    
    
    
    
     
  • 相关阅读:
    Python 实现AEC CBC 加密解密方式
    redis 发布订阅方法与缺陷
    python paramiko 传输下载文件
    Redis 配置文件
    Redis 命令
    window11 | 虚拟机vmWare安装windows11
    十万个为什么 | 文化001-为什么猜灯谜又叫做打灯谜
    ffmpeg | 常用命令使用
    ffmpeg | 常用命令使用
    Adobe系列 | Animate(01)-软件安装
  • 原文地址:https://www.cnblogs.com/lutt/p/10393001.html
Copyright © 2011-2022 走看看