Morepath: Super Powered Python Web Framework¶
Morepath is a Python web microframework, with super powers.
Morepath is a Python WSGI microframework. It uses routing, but the routing is to models. Morepath is model-driven and flexible, which makes it expressive.
- Morepath does not get in your way.
- It lets you express what you want, easily. See Quickstart.
- It’s extensible, with a simple, coherent and universal extension and override mechanism, supporting reusable code. See App Reuse.
- It understands about generating hyperlinks. The web is about hyperlinks and Morepath actually knows about them. See Paths and Linking.
- Views are simple functions. Generic views are just views too. See Views.
- It has all the tools to develop REST web services in the box. See REST.
- Documentation is important. Morepath has a lot of Documentation.
Sounds interesting?
Walk the Morepath with us!
Video intro¶
Here is a a 25 minute introduction to Morepath, originally given at EuroPython 2014:
Morepath Super Powers¶
- Automatic hyperlinks that don’t break.
- Creating generic UIs is as easy as subclassing.
- Simple, flexible, powerful permissions.
- Reuse views in views.
- Extensible apps. Nestable apps. Override apps, even override Morepath itself!
Curious how Morepath compares with other Python web frameworks? See Comparison with other Web Frameworks.
Morepath Knows About Your Models¶
import morepath
class App(morepath.App):
pass
class Document(object):
def __init__(self, id):
self.id = id
@App.path(path='')
class Root(object):
pass
@App.path(path='documents/{id}', model=Document)
def get_document(id):
return Document(id) # query for doc
@App.html(model=Root)
def hello_root(self, request):
return '<a href="%s">Go to doc</a>' % request.link(Document('foo'))
@App.html(model=Document)
def hello_doc(self, request):
return '<p>Hello document: %s!</p>' % self.id
if __name__ == '__main__':
config = morepath.setup()
config.scan()
config.commit()
morepath.run(App())
Want to know what’s going on? Check out the Quickstart!
More documentation, please!¶
If you have questions, please join the #morepath IRC channel on freenode. Hope to see you there!