Skip to main content

Rigid MVC content negotiation for Flask

Project description

This is Holster, an extension for Flask that makes RESTfulness and content negotiation easy:

from flask import Flask
from flask.ext.holster.main import init_holster

app = Flask(__name__)
init_holster(app)

@app.holster("/test")
def test():
    from math import pi

    return {
        "data": "Hello from Holster!",
        "nested": {
            "numeric": 0,
            "floating": pi,
            "unicode": u"Espa\xf1ol",
        },
        "secure": {
            "xss-sword": ';!--"<XSS>=&{()}',
        }
    }

if __name__ == "__main__":
    app.run()

This application will automatically figure out which data type to return, using a combination of user agent parameters and URL extensions. If a user agent requests “/test.html” they will get HTML, but if they request “/test.json” they will get JSON instead. No longer do you have to worry about constructing sites with separate interfaces for HTML and JSON; one holstered site can do it all!

Holster currently has default renderers for the following formats:

  • HTML

  • JSON

  • Plaintext

  • YAML

Users can also override renderers for any format or MIME type they would like, with with_template:

from my_sweet_website import PNGHeaderMaker
from flask.ext.holster.views import with_template

@app.holster("/customized")
@with_template("image/png", PNGHeaderMaker)
def custom():
    return {"header": "Welcome to my site!"}

Changelog

0.2

  • Compatibility: Don’t use itertools, for Python 2.5

  • Enhancement: Split holsterizing views into two pieces, for easier customization

  • Feature: New helpers module for helping write customized views

1.1.2

  • Feature: Changelog

  • Feature: Documentation

  • Feature: Optional HOLSTER_COMPRESS setting for automatically compressing response data

  • Enhancement: Vary header is filled out

  • Change: Improved names of view objects

Project details


Download files

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

Source Distribution

Flask-Holster-0.2.tar.gz (6.2 kB view details)

Uploaded Source

File details

Details for the file Flask-Holster-0.2.tar.gz.

File metadata

File hashes

Hashes for Flask-Holster-0.2.tar.gz
Algorithm Hash digest
SHA256 2a036d0ef410fa76826c415e7f9a5dbf8e088b6970b212eeb11371ce863b8b84
MD5 de38cd0b7778328f32e74cddfc7a1ba4
BLAKE2b-256 51bcb1493df8ae4062438a25d46b57e27feaad3edbf0bb9cfde949abe6e7c966

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page