Skip to main content

flango!

Do you like the niceties of Flask, but have to use Django for some reason? Are you a lunatic?

If you answered yes twice, this library is for you!

Supports Python 2.6 to 3.7, and Django 1.8+

Quickstart

Install package.

pip install flango

Create Flango app, add it to your urls.

# urls.py
from flango import Flango

app = Flango(__name__)

@app.route('/<int:pk>')
def index(pk):
    from django.contrib.auth.models import User
    return User.objects.get(pk=pk).first_name

urlpatterns = app.urlpatterns

Benefits

  • Access current request anywhere

    from django import forms
    from flango import request
    
    class MyForm(forms.Form):
       def save(self):
           instance = super(MyForm, self).save(commit=False)
           instance.user = request.user
           instance.save()
           return instance
    
  • Declare your routes alongside your views

    from flango import render_template
    from myapp import app
    
    @app.route('/about')
    def about():
       return render_template('about.html')
    
  • Typed variable parts

    from flango import render_template
    from myapp import app
    
    @app.route('/map/<float:lat>/<float:long>')
    def map(lat, long):
       assert isinstance(lat, float)
       assert isinstance(long, float)
       return render_template('map.html', lat=lat, long=long)
    
  • Return response content, status code, and headers directly from views

    from myapp import app
    
    @app.route('/ok')
    def ok():
       return 'ok'
    
    @app.route('/idk')
    def idk():
       return 'idk', 404
    
    @app.route('/wat')
    def wat():
       return 'wat', 400, {'Content-Type': 'text/wat'}
    
  • Save precious PEP-8 space when building URLs

    from django.db import models
    from flango import url_for
    
    class MyModel(models.Model):
       def get_invitation_link(self, friend_name):
           return url_for('my-model-invite', id=self.id, friend_name=friend_name)
    

Using flango.request with regular Django views

Flango wraps your view functions to provide the request object globally. When your form or other code which accesses flango.request is called from a regular Django view, it will fail.

To fix this, add Flango's global_request_middleware to your settings.MIDDLEWARE:

# settings.py
MIDDLEWARE = (
    'flango.global_request_middleware',
    # ...
)

For best results, place it at the top of the list. This allows you to use flango.request in other middlewares.

Metadata

Release files for flango 0.0.2

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

Source distribution (sdist)

Source distribution for flango 0.0.2
File Size Uploaded
flango-0.0.2.tar.gz 5.5 kB Details

Release files / flango-0.0.2.tar.gz

Download URL flango-0.0.2.tar.gz
Size 5.5 kB
Tags Source
SHA-256 checksum
How to use checksums
59b75bf2f611a3036d9cb0b83ae7ef2d8e8657a599d54b7e6ec88987c8b469c3
BLAKE2b-256 checksum
How to use checksums
1592285abcfd0d7926e54f5a126fc9b5554fd34e7d438519fd61b1276cfa4f02
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.0.2 This release

1 release file

0.0.1

2 release files

0.0.0

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