Inside Flask - app.py - 1】的更多相关文章

Inside Flask - app.py - 2 Flask 初始化参数 Flass 类是 Flask 框架的核心,一个 flask 对象处理视图函数注册.URL规则.模板配置.参数设置等等. 一般地, Flask 在使用时,先创建一个 flask 对象: from flask import Flask app = Flask(__name__) 除此之后, Flask 的初始化支持更多的参数,其完整的函数签名为: def __init__(self, import_name, static_…
Inside Flask - app.py - 1 除 werkzeug 和 jinja2 等依赖库外,app.py 是在 Flask 的 __init__.py 中导入的第一个 Flask 自身的模块. app.py 的注释中已明确说明这个模块的作用: flask.app ~~~~~~~~~ This module implements the central WSGI application object. 依赖分析 在这个模块中,导入了 Flask 中的其它工具模块,并组合起来实现所需的功…
flask.app该模块2000多行代码,主要完成应用的配置.初始化.蓝图注册.请求装饰器定义.应用的启动和监听,其中以下方法可以重点品读和关注 def setupmethod(f): @setupmethoddef register_blueprint(self, blueprint, **options): @setupmethoddef add_url_rule(self, rule, endpoint=None, view_func=None, provide_automatic_opt…
Inside Flask - 配置的实现 flask 的配置对象 app.config 本身使用很简单,无非就是以字典的形式使用,而它的实现,本身就是以字典的形式的. 在 flask/config.py 文件中,包含了 flask 配置的实现代码,就两个类 ConfigAttribute 和 Config . ConfigAttribute 表示一个配置属性,它的代码只有简单几行,但由于使用了 descriptor 模式,对 python 不熟悉的人不容易理解.先看看 descriptor 是个…
Inside Flask - globals 全局变量(对象代理) 框架是一个容器,在框架内编程,一般是要遵守框架的约定和使用模式.通常这样的模式是 IoC,即由框架调用用户的代码,而不是用户调用框架.框架需要记录当前的状态,并提供给用户代码使用.常用的 Jsp Servelet .ASP.net 等,将请求和状态封装为向用户代码提供的 request .session 等对象.在 flask 中,完成这些工作的是上下文 ctx (context) 和 globals 的全局对象. flask/…
Inside Flask - flask.__init__.py 和核心组件 简单的示例 首先看看一个简单的示例.使用 Flask ,通常是从 flask 模块导入 Flask . request 等等组件.一个简单的示例如下: from flask import Flask app = Flask(__name__) app.config.update(DEBUG=True) @app.route('/') @app.route('/index') def index(): return '<…
TL;DR,可以直接看下面的总结 问题1:为什么app.config['DEBUG'] = True,然后flask run并没有开启debugger和reloading,而直接运行脚本(python manage.py)却可以生效? # manage.py from flask import Flask app = Flask(__name__) # app.config['DEBUG'] = True print(app.debug) @app.route('/') def index():…
Inside Flask - json 处理 在处理 web api 时,json 是非常好用的数据交换格式,它结构简单,基本上各种主流的编程语言都有良好的支持工具. flask 中处理 json 时,对 json 加了一层包装,从而返回一个 Response 对象.简单的例子如下 :: from flask import jsonify ... @app.route('/hello') def hello(): result = { 'status': 'success', 'data': '…
Inside Flask - signal 信号机制 singal 在平常的 flask web 开发过程中较少接触到,但对于使用 flask 进行框架级别的开发时,则必须了解相关的工作机制.flask 通过 singal 机制,通知上层代码当前 flask 正在进行的处理动作,以便上层代码在 flask 进行处理的前后进行相关的处理(类似于 java 中通过 AOP 拦截操作,在 before action 和 after action 中进行一些处理动作). singal 一般只用于通知目的…
Inside Flask - flask 扩展加载过程 flask 扩展(插件)通常是以 flask_<扩展名字> 为扩展的 python 包名,而使用时,可用 import flask.ext.<扩展名> 来导入扩展包.一般使用方法见 flask 扩展.在最新的 0.11.1 代码中,不建议使用 flask.ext 加载扩展,可通过 flask_xxx 的名字直接调用扩展,那样就不需要 flask 自带的扩展机制,但了解一下原来的扩展实现机制还是很有意思的. flask 在处理这…
Inside Flask - Flask 简介 前言 Flask 的设计目标是实现一个 wsgi 的微框架,其核心代码保持简单和可扩展性,很容易学习.对于有一定经验初学者而言,跟着例子和一些书的代码来学习,很快就能上手并使用到开发过程中.最近都在做 python web 方面的开发,使用 Flask 作为框架.最初匆匆忙忙啃了点 Flask 方面的资料,学习了相关的概念和一些例子,就能开始动手设计和实现(推荐一本入门的书,非常适合初学者 Flask Web开发:基于Python的Web应用开发实…
源码: # -*- coding: utf-8 -*-""" flask ~~~~~ A microframework based on Werkzeug. It's extensively documented and follows best practice patterns. :copyright: © 2010 by the Pallets team. :license: BSD, see LICENSE for more details.""&…
因为0.1版本整体代码大概只有350行,比较简单.所以本篇文章会以Flask 0.1版本源码为基础进行剖析Flask应用的启动过程. Flask参考资料flask,官网有一个最简单app: from flask import Flask app = Flask(__name__) @app.route('/hello') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run(host='0.0.0.…
一.__call__() 在Flask app启动后,一旦uwsgi收到来自web server的请求,就会调用后端app,其实此时就是调用app的__call__(environ,start_response). flask.py: def __call__(self, environ, start_response): return self.wsgi_app(environ, start_response) 二.wsgi_app() 当http请求从server发送过来的时候,他会启动__…
内容已过期,分割线以下为原文存档. 故事背景 这次我需要将一个Flask应用部署到本地的Windows服务器上.操作系统是64位的,程序是基于Python 3开发的,大体就是这样. 部署选项 根据Flask的部署指南,可供选择的方式还是蛮多的,IIS.Apache.nginx……本着享受生活不折腾的原则,我们应该选择标准的.方便的.用户多的技术.再按照页面上的提示,“Just remember that your Flask application object is the actual WS…
原理如下:   image.png 1.通过调用自定义config.py文件中config字典,可以得到一个类, 这个类里面定义的都是类变量,这些变量就是自定义的一些配置项. 如下config.py : : import os BASEDIR = os.path.abspath(os.path.dirname(__file__)) class Config: """base config""" SECRET_KEY = os.environ.ge…
目录 Flask - app的配置和实例化Flask的参数 app的配置 app的配置 Flask - app的配置和实例化Flask的参数 app的配置 基本用法: from flask import Flask app = Flask(__name__) # type:Flask app.config["DEBUG"] = True # 服务端自动重启(调试模式) Flask的配置就是在 app.config 中添加一个键值对,但是你存进去的键必须是config中应该存在的,如果不…
在flask中,分为两种操作方式,url指向函数或者终端指向函数,最终目的就是让函数执行,触发方式不同.终端执行更加安全, 另外如果在终端执行的时候出现 : 就是说明 insert 没有在@ manager.command 装饰器.需要查看一下,这个函数是用的哪个装饰器. 另外,如果明明有@ manager.command 这个装饰器的前提下,在终端执行仍然没有反应,请查看是否是…
之前分析route方法的时候,可以看到中间会调用add_url_rule方法,add_url_rule方法和route方法一样属于Flask这个类的. add_url_rule方法主要用来连接url规则.具体工作方法和route类似.如果提供了视图函数,它将会和endpoint名字一起被注册 #装饰器使用方法: @app.route('/') def index(): pass # 等同与下面这种方法: def index(): pass app.add_url_rule('/', 'index…
转载自 http://python.jobbole.com/80956/ 下面是Flask主页给我们的第一个例子,我们现在就由它入手,深入理解“@app.route()”是如何工作的.           Python   1 2 3 4 5 app = Flask(__name__)   @app.route("/") def hello():     return "Hello World!" @app.route和其它装饰器 要想明白“@app.route()…
源码 # -*- coding: utf-8 -*-""" flask._compat ~~~~~~~~~~~~~ Some py2/py3 compatibility support based on a stripped down version of six so we don't have to depend on a specific version of it. :copyright: © 2010 by the Pallets team. :license: B…
在2018年以前的版本,以上配置在app.run()里面的内置方法…
http://flask.pocoo.org/ http://flask.pocoo.org/docs/0.12/api/#api API http://docs.pythontab.com/flask/flask0.10/quickstart.html 文档 http://flask-restful.readthedocs.io/en/latest/ Flask-RESTful是Flask的扩展,增加了对快速构建REST API的支持.鼓励最小化设置的最佳做法. http://www.cnbl…
Flask是一个使用 Python 编写的轻量级 Web 应用框架.Flask 本身只是 Werkezug 和 Jinja2 的之间的桥梁,前者实现一个合适的 WSGI 应用,后者处理模板. 当然, Flask 也绑定了一些通用的标准库包,比如 logging . 除此之外其它所有一切都交给扩展来实现.我将追踪一个简单FlaskApp的运行,看看request和response是怎么实现,以下是一个简单的flask app代码,可用浏览器访问 #!/usr/bin/env python # en…
场景:按照github文档上启动一个flask的app,默认是用5000端口,如果5000端口被占用,启动失败. 样例代码: from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello, World!' 启动的脚本: $ env FLASK_APP=hello.py flask run 出错信息如下: renjg@renjg-HP-Compaq-Pro-6380-MT:~/Wor…
Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器. “微”(micro) 并不表示你需要把整个 Web 应用塞进单个 Pyt…
先看一个例子: #!/usr/bin/env python # -*- coding:utf-8 -*- import threading # local_values = threading.local() class Foo(object): def __init__(self): self.name = 0 local_values = Foo() def func(num): local_values.name = num import time time.sleep(1) print(…
2018-04-04 13:09:47 lucky404 阅读数 5724更多 分类专栏: python   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/lucky404/article/details/79815997 之前有阅读过tornado 底层的实现,tornado 为了解决C10K 问题(没听说过C10K问题的请查看: http://www.360doc.com/conte…
@app.route(), 是调用了flask.app.py文件里面的Flask类的route方法,route方法所做的事情和add_url_rule类似,是用来为一个URL注册一个视图函数,但是我们知道route方法是以装饰器的方式使用的 def route(self, rule, **options): """sage:: @app.route('/') def index(): return 'Hello World' :param rule: the URL rule…
Flask debug 模式 PIN 码生成机制安全性研究笔记 0x00 前言 前几天我整理了一个笔记:Flask开启debug模式等于给黑客留了后门,就Flask在生产网络中开启debug模式可能产生的安全问题做了一个简要的分析.其中有一个比较严重的安全问题是,可以在交互式Python shell中执行自定义Python代码.就这一点来讲,在旧版本的Flask中是不需要输入PIN码认证就可以执行代码,其危害不言而喻. 在新版本的Flask中需要输入PIN码进行认证,才能执行自定义代码,于攻击者…