Simple motor wrapper for Sanic.
Notice:
Works on Sanic >= 0.4.0 and MOTOR_URI need to be defined in app.config
pip install sanic-motor
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from sanic import Sanic
from sanic_jinja2 import SanicJinja2
from sanic_motor import BaseModel
app = Sanic(__name__)
settings = dict(MOTOR_URI='mongodb://localhost:27017/myapp',
LOGO=None,
)
app.config.update(settings)
BaseModel.init_app(app)
jinja = SanicJinja2(app, autoescape=True)
class User(BaseModel):
__coll__ = 'users'
__unique_fields__ = ['name']
# __unique_fields__ = ['name, age'] # name and age for unique
@app.route('/')
async def index(request):
cur = await User.find(sort='name')
return jinja.render('index.html', request, users=cur.objects)
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8000, debug=True)
see examples and source code for details.
Run example:
$cd example
$virtualenv venv
$. venv/bin/activate
$pip install -r requirements.txt
$python myapp.py
Open http://localhost:8000 to see the example page.