from flask import Flask, request, render_template
class MyPlugin(Flask):
def __init__(self, import_name):
super(MyPlugin, self).__init__(import_name)
from myplugin import MyPlugin
app = Flask(__name__)
myplugin = MyPlugin(__name__)
app.register_blueprint(myplugin)
@myplugin.route('/myplugin')
def myplugin_route():
return "Hello from MyPlugin!"
app.config['MYPLUGIN_OPTION'] = 'value'
# myplugin.py
from flask import Flask, Blueprint
class MyPlugin(object):
def __init__(self, import_name):
self.app = Flask(import_name)
self.blueprint = Blueprint('myplugin', import_name)
self.app.register_blueprint(self.blueprint)
def route(self, url):
def decorator(func):
self.app.add_url_rule(url, view_func=func)
return func
return decorator
def hello(self):
return "Hello from MyPlugin!"
myplugin = MyPlugin(__name__)
@myplugin.route('/myplugin')
def myplugin_route():
return myplugin.hello()
# main.py
from flask import Flask
from myplugin import myplugin
app = Flask(__name__)
app.register_blueprint(myplugin.blueprint)
app.config['MYPLUGIN_OPTION'] = 'value'
if __name__ == '__main__':
app.run()