def create_app(object_name):
"""
An flask application factory, as explained here:
http://flask.pocoo.org/docs/patterns/appfactories/
Arguments:
object_name: the python path of the config object,
e.g. mothership.settings.ProdConfig
env: The name of the current environment, e.g. prod or dev
"""
app = Flask(__name__)
@app.before_first_request
def _run_on_start():
init_db()
csrf = CsrfProtect(app)
@app.template_filter('datetime')
def datetimeformat(value, format='%d/%m/%y %H:%M %p'):
return datetime.datetime.utcfromtimestamp(value).strftime(format)
app.config.from_object(object_name)
# initialize the cache
cache.init_app(app)
# initialize the debug tool bar
# debug_toolbar.init_app(app)
# initialize SQLAlchemy
db.init_app(app)
login_manager.init_app(app)
# Import and register the different asset bundles
assets_env.init_app(app)
assets_loader = PythonAssetsLoader(assets)
for name, bundle in assets_loader.load_bundles().items():
assets_env.register(name, bundle)
# register our blueprints
app.register_blueprint(main)
app.register_blueprint(campaigns)
app.register_blueprint(graphs)
app.register_blueprint(fuzzers)
csrf.exempt(fuzzers)
try:
os.mkdir(app.config['DATA_DIRECTORY'])
except FileExistsError:
pass
return app
python类CsrfProtect()的实例源码
def add_blueprints(application):
csrf = CSRFProtect(application)
# import and register the main application blueprint
from app.views.questionnaire import questionnaire_blueprint
application.register_blueprint(questionnaire_blueprint)
questionnaire_blueprint.config = application.config.copy()
from app.views.feedback import feedback_blueprint
application.register_blueprint(feedback_blueprint)
feedback_blueprint.config = application.config.copy()
from app.views.session import session_blueprint
csrf.exempt(session_blueprint)
application.register_blueprint(session_blueprint)
session_blueprint.config = application.config.copy()
from app.views.flush import flush_blueprint
csrf.exempt(flush_blueprint)
application.register_blueprint(flush_blueprint)
flush_blueprint.config = application.config.copy()
from app.views.dump import dump_blueprint
application.register_blueprint(dump_blueprint)
dump_blueprint.config = application.config.copy()
from app.views.errors import errors_blueprint
application.register_blueprint(errors_blueprint)
errors_blueprint.config = application.config.copy()
from app.jinja_filters import blueprint as filter_blueprint
application.register_blueprint(filter_blueprint)
from app.views.static import contact_blueprint
application.register_blueprint(contact_blueprint)
contact_blueprint.config = application.config.copy()