Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

Rango is a spicey API to Django with some extras.

Project Description

Rango is a bit of spice for Django.


I beleive that short and plain imports are better than long
nested ones.

In Django you should write in your ````:

from django.core.urlresolvers import reverse
from django.shortcuts import get_object_or_404, redirect
from django.contrib.auth.decorators import login_required

In Rango:

from rango.urls import reverse
from rango.views import get_object_or_404, login_required

Actually that is experimental project tending to build cleaner
API for Django.

Core features

### New ``reverse`` method

It works like that:

from rango.urls import reverse
reverse('url_name', pk=8)

Django ``reverse`` works so:

from django.core.urlresolvers import reverse
reverse('url_name', kwargs={'pk': 8})

### Base model class

It has shorcuts for ``all``, ``get``, ``filter`` and ``exclude``
methods and some extra magic:

from rango import models

class MyModel(models.RangoModel):
class MyModel(RangoModel):
title = models.CharField(max_length=100)
is_active = models.BooleanField()

def active(cls, _queryset=None):
return cls.filter(_queryset, is_active=True)

all_objects = MyModel.all()
start_with_a = MyModel.filter(title__startswith="a")
active_objects =

**Note!** Now you can define filter methods in model class
and chain them in queries. Magic!

### Shortcuts ``rango.views``

from rango.views import render_to, ajax_request, render_to_response, \
render, redirect, get_object_or_404, login_required

### Mailing shortcut

If you need to compose E-mail message body from template and
send it you may use a shortcut:

from rango.mail import send_template

send_template(subject='Subject', template='mail.html',

Full method signature:

def send_template(subject=None, template=None, recipient_list=[],
context={}, from_email=None, **kwargs)

### Other shortcuts and stuff

from rango.crypto import random_token
random_token(20) # creates rangom string

# Yes! that's replacement for
# from django.conf import settings
from rango import settings
settings.get_setting('CUSTOM_SETTINGS', default='Some value')

from rango.utils import safe_upload_to
from rango import models
class MyFile(models.Model):
file = models.FileField(upload_to=safe_upload_to('files'))
# files will be uploaded to
# files/<instance id>/<random>_<filename>


It's not ready yet, I'm working on it.

If you're brave, watch in the source :)
Release History

Release History

This version
History Node


Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
rango-0.0.2a.tar.gz (8.8 kB) Copy SHA256 Checksum SHA256 Source Jan 21, 2013

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting