框架——flask知识点回顾
1.
flask--轻量级Web开发框架
2.
Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL
免去不同Web应用相同代码部分的重复编写,只需关心Web应用核心的业务逻辑实现
4. Web应用程序的本质:
处理本次HTTP请求,即完成本次请求的业务逻辑处理
构造并返回处理结果——HTTP响应
可以降低开发难度,提高开发效率。
总结一句话:避免重复造轮子
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:简单而可扩展的管理接口的框架
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.使用蓝图可以分为三个步骤:
def admin_home():
return 'admin_home'
当在应用对象上调用 route 装饰器注册路由时,这个操作将修改对象的url_map路由表
然而,蓝图对象根本没有路由表,当我们在蓝图对象上调用route装饰器注册路由时,它只是在内部的一个延迟操作记录列表defered_functions中添加了一个项
当执行应用对象的 register_blueprint() 方法时,应用对象将从蓝图对象的 defered_functions 列表中取出每一项,并以自身作为参数执行该匿名函数,即调用应用对象的 add_url_rule() 方 法,这将真正的修改应用对象的路由表
框架——flask知识点回顾的更多相关文章
- Java进阶(二十六)公司项目开发知识点回顾
公司项目开发知识点回顾 前言 "拿来主义"在某些时候并不是最佳选择,尤其是当自己遇到问题的时候,毫无头绪. 在一次实验过程中,需要实现数据库的CRUD操作.由于之前项目开发过程中, ...
- flask框架----flask基础
知识点回顾 1.flask依赖wsgi,实现wsgi的模块:wsgiref,werkzeug,uwsgi 2.实例化Flask对象,里面是有参数的 app = Flask(__name__,templ ...
- django知识点回顾与补充
一.django知识点回顾 1.Cookie操作 - 客户端本地存储的键值对 2.Session操作 - 3.URL路由 - /index -> view.函数 4.MTV 5.View中返回方 ...
- Spring学习笔记:Spring整合Mybatis(mybatis-spring.jar)(一:知识点回顾)
一.知识点回顾 1.Mybatis环境搭建(DAO层的实现)(使用maven项目管理工具) 需要引入的依赖包: <!-- 单元测试junit --> <dependency> ...
- 面试前的准备---C#知识点回顾----03
经过一天的奔波,喜忧参半,不细表 再回看下标题,C#知识点回顾 再看下内容,数据库3NF 原谅我这个标题党 今天继续回忆 1.HTTP中Post和Get区别 这忒简单了吧,大家是不是感觉到兴奋了,长舒 ...
- Spring知识点回顾(08)spring aware
Spring知识点回顾(08)spring aware BeanNameAware 获得容器中的bean名称 BeanFactoryAware 获得当前的bean factory Applicatio ...
- Spring知识点回顾(07)事件发布和监听
Spring知识点回顾(07)事件发布和监听 1.DemoEvent extends ApplicationEvent { public DemoEvent(Object source, String ...
- Spring知识点回顾(01)Java Config
Spring知识点回顾(01) 一.Java Config 1.服务和服务注入 2.Java 注解 :功能更强一些 3.测试验证 二.注解注入 1.服务和服务注入 2.配置加载 3.测试验证 三.总结 ...
- $Django Rest Framework-认证组件,权限组件 知识点回顾choices,on_delete
一 小知识点回顾 #orm class UserInfo (models.Model): id = models.AutoField (primary_key=True) name = models. ...
随机推荐
- 每天学点Linux-选取命令CUT和GREP
选取命令就是将一段数据经过分析后,取出我们所想要的.或者是经由分析关键词,取得我们所想要的那一行!一般来说,选取命令通常是针对一行一行的数据来进行分析的, 并不是整篇信息分析.cut cut命令可以将 ...
- PowerDesigner 中模型设计导出Excel表格
今天项目做设计,客户要看数据设计,需要到处Excel表格.去网上搜索下,把使用总结如下: 已经完成设计的pd设计 打开pd,快捷键Ctrl + Shift + X或者Tools>Exectue ...
- docker安装和使用
1.安装的docker版本 docker -v Docker version 17.03.2-ce 2.查看本地的镜像 docker images 3.拉取镜像 docker pull centos: ...
- Shell常见问题整理
1. 使用shell进行程序设计的原因是什么? 可以快速.简单的完成编程,非常适合于编写一些执行相对简单的任务的小工具.如果有一个简单的构想,可以通过它检查自己的想法是否可行.还可以使用shell对进 ...
- google的python语言规范
Python语言规范 Lint Tip 对你的代码运行pylint 定义: pylint是一个在Python源代码中查找bug的工具. 对于C和C++这样的不那么动态的(译者注: 原文是less ...
- 转载:【Scala】使用Option、Some、None,避免使用null
转载自Jason DingGitCafe博客主页(http://jasonding1354.gitcafe.io/)Github博客主页(http://jasonding1354.github.io/ ...
- 【转载】C++中替代sprintf的std::ostringstream输出流详解
一.简单介绍 ostringstream是C++的一个字符集操作模板类,定义在sstream.h头文件中.ostringstream类通常用于执行C风格的串流的输出操作,格式化字符串,避免申请大量的缓 ...
- gitlab+jenkins+tomcat war包部署(此文有新版本)
对本文进行格式整理,url: https://www.cnblogs.com/huandada/p/9969234.html 整个项目的框架为: 1.gitlab的安装(Centos7) 新建/etc ...
- vue2中使用transition
最终效果为 div元素从右向左出现, 然后从左向右消失. transition标签包裹要移动的元素: css 样式: 其中: 1: 为div元素显示时的状态 2: 为div元素移动的过程 (进入 ...
- 6 关于plsql中文显示乱码问题
打开plsql查看数据表时,会看到中文显示乱码问题 解决方案 输入下图所示语句并运行 在输入下图所示语句并运行,查看第一行和第九行是否对应 3)查看下环境变量的设置,查看是否有变量NLS_LANG,没 ...