$ curl -iH "Accept: text/plain" localhost:8080/x ... Content-Type: text/plain ... Hello, x! """ from flask import Flask try: import simplejson as json except ImportError: import json import mimerender mimerender = mimerender.FlaskMimeRender() render_xml = lambda message: '<message>%s</message>'%message render_json = lambda **args: json.dumps(args) render_html = lambda message: '<html><body>%s</body></html>'%message render_txt = lambda message: message app = Flask(__name__) @app.route('/') @app.route('/<name>') @mimerender( default = 'html', html = render_html, xml = render_xml, json = render_json,
import mimerender mimerender.register_mime('pdf', ('application/pdf', )) mimerender = mimerender.FlaskMimeRender(global_charset='UTF-8') def render_pdf(html): from xhtml2pdf import pisa from cStringIO import StringIO pdf = StringIO() pisa.CreatePDF(StringIO(html.encode('utf-8')), pdf) resp = pdf.getvalue() pdf.close() return resp @app.route('/invoice/<invoice_id>/', methods=['GET']) @login_required @mimerender(default='html', html=lambda html: html, pdf=render_pdf, override_input_key='format') def view_invoice(org_id, invoice_id): html = render_template('invoice.html', id=invoice_id) return {'html': html} # mimerender requires a dict