Definir la estructura correcta es un punto clave para el éxito de un proyecto de desarrollo en cualquier ámbito. En el caso de Django, es necesario que la forma en la que coloquemos los ficheros dentro de nuestro proyecto nos permita tener escalabilidad en el proyecto, nos permita añadir fácilmente nuevas aplicaciones e integrarlas y probarlas continuamente, funcione tanto en el entorno de desarrollo como en el de producción y facilite el despliegue, entre otros. En resumen, es necesario evitarnos malos ratos y optimizar el tiempo de desarrollo.
En la entrada Fabric, Pip y Virtualenv, esteroides para el desarrollo con Python les presenté a 3 buenos amigos para el desarrollo con Python. La estructura que utilizo para mis proyectos en Django está muy influenciada por el uso de estas herramientas en el proceso de desarrollo.
Dejando atrás los rodeos...
nombre del sitio/
servidor web/ (puede haber varios si es necesario)
ficheros de configuración del servidor web
env/
espacio para el virtualenv del proyecto
fab/
fabfile.py (script para Fabric)
pip/
reqs.txt (fichero de dependencias para Pip)
public/ (información pública del sitio)
css/
files/
fonts/
images/
js/
nombre del proyecto/ (como lo genera django-admin startproject)
locale/
ficheros de i18n del proyecto
templates/
__init__.py
manage.py
settings.py
urls.py
Esta estructura base se puede colocar en un control de versiones con dos objetivos; para mejorarlo a medida de que se vayan perfeccionando las prácticas de desarrollo, y para mezclarlo al inicio de los nuevos proyectos. Éste en particular está disponible entre mis repos Mercurial, con un mirror en GitHub. Se aceptan sugerencias por este medio, o con issues o pull requests en GitHub.