Extend django-admin to create apps that are easier to set

pip install django-easy-app==0.0.27



This is a django app that trys to simplify using django. Currently it has features that do the following:

  • An easy_app script that allows for creating new django projects that are set up with the djang0-easy-app functionality.
  • A django-easy-app django app has the following functionality that simplify using django.
  • The ability to specify the url routing using a new "route" attribute on django class based view classes. This akes it possible to write and use class based views without needing to understand regular expressions and seperately update the
  • Adds a starteasyapp command to to allow for easily creating additional django-easy-app enabled django apps.


Here are some steps for getting things going

Install django-easy-app

Install using pip as follows:

pip install django-easy-app

Set up a new django project

Create a new python project using the django_easy command like this:

django_easy startproject project_name app_name


$ django_easy startproject foo_project foo
Creating easyapp named: foo
$ tree foo_project
├── foo
│   ├──
│   ├──
│   ├── migrations
│   │   └──
│   ├──
│   ├──
│   ├──
│   └──
├── foo_project
│   ├──
│   ├── __init__.pyc
│   ├──
│   ├── settings.pyc
│   ├──
│   └──

3 directories, 14 files

Create views

In the file define a variable named "easydjango" and set the value to true.

Make sure each view that should be accessible from the web has a *route* attribute that contains the part of the url that should be associated with the view. This should not include any other part of the url.

So for example foo_app.view.ExampleView below has a route value of '' (empty string) which will cause it to be accessible at http://hostname:portnumber/appname/classroute/ for the project created in the previous example. The URL when running runserver would be http://localhost:8000/foo_app/

from django.http import HttpResponse
from django.views.generic import View

easydjango = True

class NameView(View):
    route = ''
    def get(self, request):
        name = request.GET.get('name', 'World!')
        return HttpResponse('Hello %s' % name)

View without arguments

View passing a name argument