skip to navigation
skip to content

Not Logged In

flask-marshmallow 0.2.0

Flask + marshmallow for beautiful APIs

Latest Version: 0.5.0

Flask + marshmallow for beautiful APIs

Flask-Marshmallow is a thin integration layer for Flask (a Python web framework) and marshmallow (a serialization library) that adds additional features to marshmallow, including URL and Hyperlinks fields for HATEOAS-ready APIs.

Create your app.

from flask import Flask, jsonify
from flask.ext.marshmallow import Marshmallow

app = Flask(__name__)
ma = Marshmallow(app)

Write your models.

from your_orm import Model, Column, Integer, String, DateTime

class User(Model):
    email = Column(String)
    password = Column(String)
    date_created = Column(DateTime, auto_now_add=True)

Define your output format with marshmallow.

class UserMarshal(ma.Serializer):
    class Meta:
        # Fields to expose
        fields = ('email', 'date_created', '_links')
    # Smart hyperlinking
    _links = ma.Hyperlinks({
        'self': ma.URL('author_detail', id='<id>'),
        'collection': ma.URL('authors')
    })

Output the data in your views.

@app.route('/api/users/')
def authors():
    users = User.all()
    serialized = UserMarshal(users, many=True)
    return jsonify(serialized.data)

@app.route('/api/users/<id>')
def author_detail(id):
    user = User.get(id)
    serialized = UserMarshal(user)
    return jsonify(serialized.data)
# {
#     "email": "fred@queen.com",
#     "date_created": "Fri, 25 Apr 2014 06:02:56 -0000",
#     "_links": {
#         "self": "/api/authors/42",
#         "collection": "/api/authors/"
#     }
# }

Learn More

To learn more about marshmallow, check out its docs.

Get it now

pip install flask-marshmallow

License

MIT licensed. See the bundled LICENSE file for more details.

Changelog

0.2.0 (2014-05-12)

  • Implementation as a proper class-based Flask extension.
  • Serializer and fields classes are available from the Marshmallow object.

0.1.0 (2014-04-25)

  • First release.
  • Hyperlinks, URL, and AbsoluteURL fields implemented.
  • Serializer#jsonify implemented.
 
File Type Py Version Uploaded on Size
flask-marshmallow-0.2.0.tar.gz (md5) Source 2014-05-12 6KB
flask_marshmallow-0.2.0-py2.py3-none-any.whl (md5) Python Wheel 2.7 2014-05-12 8KB
  • Downloads (All Versions):
  • 71 downloads in the last day
  • 411 downloads in the last week
  • 2240 downloads in the last month