DjangoDE 0.1 Released

Op de laptop by romyboxsemI spend most of time at work building websites in Django. My editor of choice until now has been Kate with Chromium open on another screen. Most of my co-workers use VIM inside a PuTTY session to do their editing. With multicore machines with gigabytes of RAM, surely there’s a better way?

I investigated the current state of Django IDEs and came to conclusion that none of them are that great. Most are a plugin to a giant IDE that tries accommodate many different languages, so each feels like second best, or they are designed more for traditionally programming and not webdevelopment so they don’t integrate with Django’s in built server and don’t support editing Javascript, or provide a built in webbrowser. I also don’t want to have to pay for the editor, which limits my choice even more.

Having decided that none of the existing IDEs quite fit my requirements I did what any self respecting open source programmer with an itch would do, I headed to Google Code, created a new project and then got coding.

DjangoDE Main Editor Window

The project has now reached the stage where I feel I can make my first release, although this is a release that is very much in the spirit of the open source mantra, “release early, release often.” The key features are all in place, which I’ll talk about below, but they’re all extremely basic and it’s not ready to be used as a day-to-day editor. If you’re looking for a Visual Studio replacement, this is not it.

The source can be downloaded from the project site, or PyPI. The simplest method is just to run sudo easy_install djangode. You’ll need to have PyQt and of course Django installed. This first release also requires Linux, but being a Qt application that requirement will not exist for ever and it will eventually work on Windows (and hopefully Macs too).

DjangoDE uses the file to define the scope of the project. The “Project” menu bar lets you pick a file to load, or to create a new Django project.

The editor has a partial syntax highlighter for Python code implemented, and a quick access bar on the left of the window which lets you jump straight to the view implementing a particular url. It also has a tab for each application that is active in your project which lists the models.

When you open DjangoDE it’ll show you the Django project website in a tab. If you enter “/” into the address bar it’ll load the front page of your website.

Pressing F9 while viewing a source code file will create a breakpoint. If you then use the browser to view a page that passes that line the code will break and that point and the debug bar will appear. This shows you the variables in the current scope.

It’s very early days for this project, but these features will be fleshed out in the coming releases. I’d like to encourage people to post issues if they come across bugs or want features implemented. You can also contact me through Twitter as djangoide.

Photo of Op de laptop by romyboxsem.

Author: Andrew Wilkinson

I'm a computer programmer and team leader working at the UK grocer and tech company, Ocado Technology. I mostly write multithreaded real time systems in Java, but in the past I've worked with C#, C++ and Python.

14 thoughts on “DjangoDE 0.1 Released”

  1. Hi Andrew,

    I’ve been using Aptana + PyDev for about 3 years and have had tremendous success with it. I’m able to set a per-project Python path, and have code assist for Python, HTML, CSS, XML and JavaScript. Aptana also runs on Windows, OS X and Linux (my primary dev environment) and is quite easy to configure.

    I’ve tried Kate, TextMate, PyCharm and a few others. None have been able to match the speed and support I get in Aptana.

    From looking at your screenshot, it’s nearly identical to the outline pane provided by Aptana to jump to any method, property, class or variable in my file.

    PyDev also provides the ability to jump to a class or method definition in another file, so for example, it’s trivial to open django.contrib.auth.models.User from an import in my file. Just hover over the import and PyDev will tell me exactly where it is, in addition to the definition.

    You might give it a try!

    Happy coding

  2. > With multicore machines with gigabytes of RAM, surely there’s a better way?

    My choice is Vim. It already has most of the you mention and even if some are not present they can be easily created by plugins.

    Most importantly creating an editor with equivalent text manipulation capabilities is surely going to be a very up hill tasks.

    My idea has always been do not create a new editor (if you cannot make something vastly better than Vim or Emacs) create ecosystem around them,

  3. Hi,

    This is very AWESOME! =).

    Just thought I’d wish you good luck as well.

    The only thing is it requires PyQT and SIP, and that isn’t available under pip. And all my Django development occurs with virtualenv/pip – so it’s a bit of a pain having to manually copy over site-packages directories over to get it working.

    Can you think of any way around that?


    1. Hi Victor,

      I’m afraid that there isn’t much I can do about PyQt not being available in PyPI. It’s pretty easy to install in globally though, and you can set virtualenv to fall back to global packages. Is that not acceptable?

      I use virtualenv with my sites, but I’m not sure that putting your IDE in there makes sense.The IDE isn’t required to run the site…


      1. I suspect he probably wanted to do this while simply testing out the IDE. I was planning on doing the same, installing it in a virtualenv while testing rather than constantly adding things to the global site packages.

        However, falling back to the global PyQt isn’t a problem.

      2. Andrew,

        Thanks for the reply =).

        As Douglas noted, I did want to test it out inside a virtualenv, rather than installing everything to my main environment.

        My issue is that my various Django projects have their own dependencies. If I work on that project from within DjangoDE, how will the in-built server (when we’re able to run that from DjangoDE) know which virtualenv to use? Or will every Django project we’re using need to have all it’s dependencies installed in the global?


      3. Hi,

        On my todo list is to make it possible to use PySide rather than PyQt, which I think is a drop-in replacement. PySide is available in PyPI so hopefully that’ll help.

        In my projects I set the PYTHONPATH inside so I don’t need to remember to activate the virtualenv just to run it. This will work with DjangoDE at the moment. I do intend to make it possible to specify a script that should be run before running the server, hopefully that’ll make it into the next version.


  4. I was super excited, because this looks like it’ll be great. But when I went to install, I was disappointed that I realized Windows isn’t supported yet. =( Even worse, I just moved from Linux to Windows last month.

    1. Sorry! I fully intend to make it work on Windows. I’m spend 99% of time in Linux though, so that’s why it only works there are the moment! I’m planning to produce a Windows binary for the next release.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s