Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Rango
=====

Rango is a bit of spice for Django.

Why?
----

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

In Django you should write in your ``views.py``:

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()

@classmethod
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 = start_with_a.active()

**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',
recipient_list=[to@example.com],
context={})

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.has_setting('CUSTOM_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>


Documentation
-------------

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

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

Release files for rango 0.0.2a

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rango 0.0.2a
File Size Uploaded
rango-0.0.2a.tar.gz 8.8 kB Details

Release files / rango-0.0.2a.tar.gz

Download URL rango-0.0.2a.tar.gz
Size 8.8 kB
Tags Source
SHA-256 checksum
How to use checksums
31263868e7c28ae68dfae9ac13bf3c4c013f01790a63b6ed09ba22d0fa67ea08
BLAKE2b-256 checksum
How to use checksums
ce04c88e97784c199d22df3362ff6e2722f35b74830926c7c278c5f448aadcb5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.0.2a This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page