E-Scribe News : a programmer’s blog

About Me

PBX I'm Paul Bissex, and e-scribe.com is my consulting business. I build web applications using open source software, especially Django. I teach photographers web design and professional skills. In the '90s I did graphic design for newspapers and magazines. Then I wrote technology commentary and reviews for Wired, Salon.com, Chicago Tribune, and lots of little places you've never heard of. Feel free to email me.

Book

Python Web Development with Django I'm co-author of "Python Web Development with Django", an excellent guide to my favorite web framework. Its strong points include an introduction to Python, and better coverage of Django 1.0 than nearly anybody else. Published by Addison-Wesley, it is available from Amazon and your favorite technical bookstore as well.

Colophon

Built using Django, served by Apache and mod_wsgi. The database is SQLite. The operating system is FreeBSD, on a VPS hosted at Johncompanies.com. Comment-spam protection by Akismet. Vintage topo imagery from the Maptech archive. The markup engine is Markdown.

Pile o'Tags

Stuff I Use

Akismet, del.icio.us, Django, dpaste.com, Emacs, FreeBSD, Freenode, jQuery, LaunchBar, MacPorts, Markdown, Mercurial, OS X, Postfix, Python, SQLite, Subversion, TextMate, Trac, Ubuntu Linux, wmii

Spam Report

At least 67551 pieces of comment spam killed since January 2008, mostly via Akismet.

Notes on my new Django setup

My personal record of using revision control for source code has been pretty spotty. Today I took steps toward fixing that by working out a system for managing my Django projects. I wanted revision control (Subversion), I wanted Django's "runserver" for development and mod_python for deployment, and I didn't want it to be a pain.

Some highlights of the process:

All this was a bit of work, but what it saves me in time and worry will more than make up for that.

Update: And of course it wouldn't be an upgrade if I didn't break something -- the pastebin's SQLite database permissions got set to read-only, which I fixed just now.

Sunday, October 29th, 2006
+ +
2 comments

Comment from Joshua Bloom , 25 weeks later

For my Django work I'm usually developing on a windows Desktop or Laptop. When my stuff gets deployed it goes up to our linux servers.

In my urls.py files I do something like this:

if os == linux: production = True

if production: #Change where the SITE_MEDIA is being served from.
urlpatterns += patterns('',
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/...'}),
)
else:
urlpatterns += patterns('',
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': 'C:/...'}),
)

Comment from Paul , 25 weeks later

Cool! I love seeing the recipes people come up with to handle deployment.

My current setup is a little different now. I no longer use a settings\_local.py; I put a conditional in settings.py itself sort of like your `if os...` line to control `DEBUG` etc. I have a setting called `PROJECT_BASE` which is used by `MEDIA_ROOT` and other settings that reference the filesystem.

I no longer need the conditional URLconf trick that I linked to; if the site is running on Apache (as opposed to Django's runserver), a `SetHandler None` directive keeps Django from seeing any requests for static media.

I hope that we can start to incorporate some of these patterns (suitably generalized) into the framework itself as time goes on.

Post a comment

Thanks for reading! Please note: Your comment will not appear until approved, which may take a few hours or more. Spammers will be torpedoed.


(Will not be shared)

(Optional)