RESTful resource variant rendering using MIME Media-Types, for the Flask Micro Web Framework

pip install Flask-MimeRender==0.1.3



This module allows, with the use of python decorators, to transparently select a render function for an HTTP request handler's result. It uses mimeparse to parse the HTTP Accept header and select the best available representation.


Nicola Iarocci


Bruno Ripa


MIT License


This is a Flask port from the excellent mimerender v0.2.3 by Martin Blech. Update Martin has moved to GitHub and added Flask support to the original mimerender project. He has plans for further developments, so you might want to fork/clone his project instead.


The decorated function must return a dict with the objects necessary to render the final result to the user. The selected renderer will be called with the map contents as keyword arguments. If override_arg_idx isn't None, the wrapped function's positional argument at that index will be removed and used instead of the Accept header. override_input_key works the same way, but with the specified query string parameter.

from flask import Flask, request, jsonify
from flaskmimerender import mimerender

render_xml = lambda message: '<message>%s</message>' % message
render_json = jsonify
render_html = lambda message: '<html><body>%s</body></html>' % message
render_txt = lambda message: message

app = Flask(__name__)

    default = 'html',
    html = render_html,
    xml  = render_xml,
    json = render_json,
    txt  = render_txt
def index():
    if request.method == 'GET':
        return {'message': 'Hello, World!'}

if __name__ == "__main__":

Then you can do:

$ curl -H "Accept: application/html" localhost:5000/
<html><body>Hello, World!</body></html>

$ curl -H "Accept: application/xml" localhost:5000/
<message>Hello, World!</message>

$ curl -H "Accept: application/json" localhost:5000/
{'message':'Hello, World!'}

$ curl -H "Accept: text/plain" localhost:5000/
Hello, World!


Flask-MimeRender is on the official Python Package Index (PyPI). All you have to do is

pip install flask-mimerender

and you're good to go.