Benchmarks diz que com Weppy sua aplicação processa requisições muito mais rápido que outros frameworks.
$ pip install weppy
ESCREVA CÓDIGO ELEGANTE
Foco no produto
from weppy import App, request
from weppy.orm import Database, Model, Field
from weppy.tools import service
class Task(Model):
name = Field.string()
is_completed = Field.bool(default=False)
app = App(__name__)
db = Database(app)
db.define_models(Task)
app.pipeline = [db.pipe]
@app.route(methods='get')
@service.json
def tasks():
page = request.params.page or 1
return { 'tasks': Task.all().select( paginate=(page, 20))}
UM ORM BONITO
Relações em uma brisa
from weppy.orm import Model, Field, has_many, belongs_to
class User(Model):
name = Field.string()
email = Field.string()
has_many('posts')
validation = { 'email': {'is': 'email'} }
class Post(Model):
belongs_to('user')
body = Field.text()
validation = { 'body': {'presence': True} }
UMA INTERFACE DE CONSULTA PODEROSA
Agregação facilitada
class Event(Model):
location = Field.string()
happens_at = Field.datetime()
db.define_models(Event)
events_count = Event.id.count()
db.where(
Event.happens_at.year() == 1955
).select(
Event.location,
events_count,
groupby=Event.location,
orderby=~events_count,
having=(events_count > 10))
UM MOTOR DE TEMPLATE LIMPO
Esqueça a sintaxe de templates. Use Python.
{{extend 'layout.html'}}
<div class="post-list">
{{for post in posts:}}
<div class="post">
<h2>{{=post.title}}</h2>
</div>
{{pass}}
{{if not posts:}}
<div>
<em>No posts here so far.</em>
</div>
{{pass}}
</div>