Flask笔记

装饰器

  • 可以让其他函数在不需要做任何代码变动的前提下增加额外功能

框架的核心

  • 只提供路由和视图

面向对象思想:封装,继承,多态。

重量级框架:Django

    额外的功能:模型类,管理后台
    优点:开发速度快
    缺点:业务复杂,需求变化大

轻量级框架:Flask

    通过扩展来实现Django功能
    优点:可以根据开发者能力,提高开发者能力
    缺点:开发速度可能没有Django快

Jinja2 模板引擎
Werkzeug WSGI 工具集 (管视图)

IP:标记网络设备

端口:标记进程

DNS: 把域名解析成IP

  • 浏览器-----DNS解析--------Tcp三次握手

wsgi:web服务器和框架的桥梁一样
uwsgi:web服务器和框架之间的数据协议(约定好传什么数据)
uWSGI:实现了uwsgi协议的web服务器

nginx:

负载均衡: 将数据平均的分给服务器去运行 (雨露均沾)
正向代理:(代理用户)知道目标存在
反向代理:(代理服务器)
动静分离:有静态资源的话就不会走后面的web服务器,找到静态后直接返回给浏览器
动态资源的话就是正常流程

HTTP协议

超文本传输协议,http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态;客户端与服务器端的一次通信,就是一次会话

应用层

概念
请求头: User-Agent、Cookie、Referer (页面跳转处)
响应头:

状态码:

    * 200(OK 请求成功)。
    * 301: 永久重定向
    * 302: 临时重定向(所请求的页面已经临时转移至新的url)

    * 400:错误请求,服务器无法解析请求
    * 401:未授权,没有进行身份验证
    * 403:服务器拒绝访问
    * 404:服务器无法找到被请求的网页
    * 405:请求方式不被允许
    * 408:请求超时

    * 500:服务器内部错误
    * 501:服务器不具备完成请求的功能
    * 503:服务器不可用

请求方式:GET POST

HTTPS:默认端口443

  • CA证书
    传输层

经典类:

  • 经典类是深度优先的继承方式

新式类:

  • 新式类是广度优先的继承方式

七层协议

    1-物理层
    2-数据链路层
    3-网络层
    4-传输层
    5-会话层
    6-表示层
    7-应用层

五层协议:

    应用层
    传输层
    网络层
    数据链路层
    物理层

解决错误:
1. 大概知道错误什么意思
2. 定位行数
3. 上下文 上一步操作

  • 转换器本质是正则
  • path转化器能匹配
  • 过滤器本质就是函数
  • 过滤器本质就是函数,自定义过滤器 至少有一个参数 千万别忘记用app.jinja_env.filters注册过滤器
  • 上传文件用file 记住千万要校验文件是否安全。永远别相信用户的输入

自定义转化器? 系统内部没有那种手机号之类的逻辑

步骤是什么?
1.继承BaseConverter实现
2.通过url_map的converters注册转换器
app.url_map.converters['XXX'] = XXX

request里面有很多属性,至少要记住其中比较重要的

args 用来get参数
form 用来post参数
values  get和post都可以取

cookie

  • cookie的作用 保存在哪里

    cookie默认是关闭浏览器就过期
    设置cookie过期时间两种
    指定多少秒过期
    指定具体时间过期 这种能选一个

自定义响应

  • (response,status,headers)这样的数据结构,至少要有response。
  • status指定的是HTTP状态码,可以是HTTP中状态码,也可以是自定义的状态码。headers指的是额外的响应头。
  • 用make_response也可以自定义响应
  • json是一种数据交互格式
json--->dict    loads
dict--->json    dumps
  • 序列化:把对象转换成可传输或者可存储的过程叫序列化
  • 反序列化:把传输的数据或存储的数据转化成对象反序列化
  • 通过jsonify可以返回json数据
  • session默认过期时间就关闭浏览器就过期
  • 可以通过app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(seconds=10)设置过期时间
  • session.permanent = True #默认31天后过期

删除session

session.pop('money')
del   session['money']
session.clear() #全部删除了
  • 可以通过flask_session把session内容存在服务器上

abort() 这里面传的状态码必须是HTTP的状态码

  • 然后自定义显示状态码内容
@app.errorhandler(404)
def noufound(error):
        return '服务器迷路了 ',404

SQLALchemy 他是ORM的框架

flask_sqlalchemy 只能用于flask

  • 物理性删除:从磁盘抹去

  • 非理性删除:isdelete 假删除

  • 一对一模型,跟一对多写法是一样的,只是在添加反向引用的需要在里面加上uselist = False

  • 如果使用了flask_script 运行方式也发生了改变
manager = Manager(app)
manager.run()
python3 01-Flask扩展脚本.py runserver -h 0.0.0.0 -p 5001 -d
  • 让模型支持迁移操作 一定要是扩展脚本

初始化Migrate对象

Migrate(app.db)

通过manager 添加迁移命令 第一个参数是迁移命令的名字 第二个参数就是MigrateCommand

manager.add_command('db',MigrateCommand)

创建装迁移文件的文件夹

python3 01-Flask扩展脚本.py db init

生成迁移文件 -m 后面这次生成迁移文件的描述

python3 01-Flask扩展脚本.py db migrate -m 'add userinfo and usercard'py

迁移

python3 01-Flask扩展脚本.py db upgrade

如果回退的话alembic_version 里面最后一次迁移的版本号

python3 01-Flask扩展脚本.py db downgrade 你要退的迁移文件版本号
Flask-WTF功能
集成 wtforms。
带有 csrf 令牌的安全表单。
全局的 csrf 保护。
支持验证码(Recaptcha)。
与 Flask-Uploads 一起支持文件上传。
国际化集成。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,194评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,058评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,780评论 0 346
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,388评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,430评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,764评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,907评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,679评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,122评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,459评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,605评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,270评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,867评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,734评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,961评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,297评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,472评论 2 348

推荐阅读更多精彩内容

  • FLASK框架 简介: flask是一个非常小的python web框架 只提供了一个强劲的核心 其它都...
    riverstation阅读 2,020评论 2 38
  • 一、Flask自动重启: 每次代码修改后,必须保存后,重启服务器,然后代码才可以生效,这是python开发服务器特...
    LaurenceZi阅读 3,058评论 0 1
  • 此章和教程出入不大,可直接看原教程 之前写的代码耦合太重,python也可以像js模块化一样模块化程序结构 模块化...
    f1a94e9a1ea7阅读 269评论 0 1
  • • Flask-Login: 管理已登录用户的用户会话。• Werkzeug: 计算密码散列值并进行核对。• it...
    huozhihui阅读 1,238评论 0 2
  • 用到的数据库是sqlite,这个数据库不需要安装(因为这个数据库的运行是基于文件系统的),只要你电脑能运行C语言就...
    f1a94e9a1ea7阅读 325评论 0 0