I wasn't able to find instructions in the Django docs for setting up a template_postgis database with postgis-1.5 and Postgres 8.4 on Ubuntu Lucid (10.04). Below is what worked for me.
GeoDjango installed via Ubuntu 10.04 packages
#!/usr/bin/env bash
POSTGIS_SQL_PATH=`pg_config --sharedir`/contrib
createdb -E UTF8 template_postgis # Create the template spatial database.
createlang -d template_postgis plpgsql # Adding PLPGSQL language support.
psql -d postgres -c "UPDATE pg_database SET datistemplate='true' WHERE datname='template_postgis';"
psql -d template_postgis -f $POSTGIS_SQL_PATH/postgis.sql # Loading the PostGIS SQL routines
psql -d template_postgis -f $POSTGIS_SQL_PATH/spatial_ref_sys.sql
psql -d template_postgis -c "GRANT ALL ON geometry_columns TO PUBLIC;" # Enabling users to alter spatial tables.
psql -d template_postgis -c "GRANT ALL ON spatial_ref_sys TO PUBLIC;"
GeoDjango built from source
Use the above script, but change POSTGRISSQLPATH to:
:::bash
POSTGIS_SQL_PATH=`pg_config --sharedir`/contrib/postgis-1.5
Make sure to run sudo ldconfig
after compiling everything, or else postgis won't be able to find geos. You'll see errors like this:
:::text
psql:/usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql:59: ERROR: could not load library "/usr/lib/postgresql/8.4/lib/postgis-1.5.so": libgeos_c.so.1: cannot open shared object file: No such file or directory