Skip to main content
Join the official 2020 Python Developers SurveyStart the survey!

Flask-like interface for Django

Project description

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.

Project details


Download files

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

Files for flango, version 0.0.2
Filename, size File type Python version Upload date Hashes
Filename, size flango-0.0.2.tar.gz (5.5 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page