Skip to main content

Registering url routes for Flask app and blueprints in lazy way.

Project description

Registering url routes for your Flask app or blueprint in lazy way :)

Based on original snippet from Flask documentation!



$ pip install Flask-LazyViews


Flask-LazyViews is licensed under the BSD License.


For application


from flask import Flask
from flask.ext.lazyviews import LazyViews

app = Flask(__name__)
views = LazyViews(app)

views.add('/', 'views.home')
views.add('/page/<int:page>', '')


from flask import render_template

def home():
    return render_template('home.html')

def page(page_id):
    page = get_page(page_id)
    return render_template('page.html', page=page)

For blueprint



from project.test import blueprint as test_blueprint


app.register_blueprint(test_blueprint, url_prefix='/test')


from flask import Blueprint
from flask.ext.lazyviews import LazyViews

blueprint = Blueprint('test', __name__)
views = LazyViews(blueprint, '.views')

views.add('/', 'test')
views.add('/advanced', 'advanced_test', methods=('GET', 'POST'))


from flask import render_template, request

def advanced_test():
    context = generate_context(request.form)
    return render_template('test/advanced.html', **context)

def test():
    return render_template('test/test.html')


The main point of Flask-LazyViews is simplifying process of adding views to the app and blueprint using lazy technique from Flask documentation.

Also the next goal is simplifying viewname definition. For most cases our views functions placed in .views module of app or blueprint, so we don’t need to input full path to that module.

This especially useful for blueprints. Let see the example above, if we using original snippet - we’ll need to provide path to blueprint’s views module:

add_url(blueprint, '/', 'test.views.test')

but with Flask-LazyViews we could to ignore test.

From other side if your view functions placed in some other location or you need to provide full path to its - you still could do this.

Also you could setup import_prefix like done in Django’s patterns:

views = LazyViews(app, 'views')
views.add('/', 'home')
views.add('/page/<int:id>', 'page', methods=('GET', 'POST'))


Be careful with import_prefix value if you used __name__ as Flask application name or blueprint import_name. Setting relative path could cause server errors.

Bugs, feature requests?

If you found some bug in Flask-LazyViews library, please, add new issue to the project’s GitHub issues.



  • Implement init_app and init_blueprint methods for configuring LazyViews instance outside main application module or for multiple applications.
  • Add add_static shortcut method for adding custom URL rules for serving static files.
  • Add ability to register real view functions with LazyViews instance.


  • Initial release.

Project details

Release history Release notifications

History Node


History Node


History Node


History Node


History Node


This version
History Node


History Node


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
Flask-LazyViews-0.2.tar.gz (4.8 kB) Copy SHA256 hash SHA256 Source None Sep 17, 2012

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page