.. post:: 2008-09-12 16:01:35 Screencast: Django Command Extensions ===================================== This is a screencast on the `Django Command Extensions `_ project. It is one of my favorite third party apps, and it gets installed in every Django environment I work in. It provides a plethora of useful manage.py commands, and a couple other little goodies as well. Setup ~~~~~ Before you get started using these things, there are a couple of packages you need to install. The first is `Graphviz `_ which is a really nice toolkit for graph visualization. The other is `Werkzeug `_ which is a little python web framework with an amazing debugger that we'll be using. There can easily be installed: :: apt-get install graphviz easy_install Werkzeug Video ~~~~~ .. raw:: html
Django Command Extensions from Eric Holscher on Vimeo. Writeup ~~~~~~~ The website for the django extensions has a pretty good list of all of the commands that are available. Below I will just write about the way to use some of them that isn't well documented or a bit different or unclear. As a note, for things that output something to the screen, you can redirect that output to a file really easily. For example: ``./manage.py dumpscript blog > blog.py`` redirects the output to blog.py. The command extensions site has a list of output formats for export\_emails `here `_. Which is really useful. The command for graphviz is ``/manage.py graph_models auth blog |dot -Tpng -o test.png`` The output of graphviz is awesome. There are ways that you can hook this up to a url in your URLConf so that it will be regenerated whenever someone requests it (for data that changes often). That is a really nice feature for data that is changing a lot, where someone is watching over your work (school etc.). Just to note, ``runserver_plus`` requires that you be running ``DEBUG = True``, and that your IP Adress is in ``INTERNAL_IPS``, look at my (screencast)[http://ericholscher.com/blog/2008/aug/28/screencast-debugging-django-error-page/] here for a full explanation of this, and more! Things that weren't covered in the screencast include ``sqldiff`` which is still halfway working, and provides a diff against what your model and the current database look like. ``create_app`` and ``create_command`` are things that just flesh out the directory structure for a new app or management command. ``create_superuser`` creates a new supersuer for you. generate\_secret\_key gives you a new secret key. ``passwd`` allows you to easily change a users password. ``reset_db`` resets your current database. Thanks for watching, and stay tuned for more screencasts (and other content too ;))