Las principales pautas son similares a cualquier otro proyecto de código grande. Las aplicaciones deben abordar una responsabilidad única y claramente definida. El nombre "aplicación" es un nombre inapropiado; Las aplicaciones de Django deberían considerarse más como componentes reutilizables que se pueden conectar para crear una aplicación real. Las pruebas para cada aplicación deben estar contenidas dentro de esa aplicación. Las aplicaciones deben estar desacopladas entre sí tanto como sea posible, pero es evidente que habrá dependencias, por lo que el objetivo debe ser mantener el gráfico de dependencia lo más simple y sensato posible.
Prefiero mantener todas las plantillas para un proyecto en un solo directorio de plantillas para todo el proyecto, con un subdirectorio para cada aplicación (usar un subdirectorio de plantilla para cada aplicación es una convención muy fuerte en Django, ya que evita el nombre de la plantilla colisiones entre aplicaciones). El motivo de un único directorio de plantillas para todo el proyecto es que las plantillas, los árboles de herencia de plantillas y los nombres de bloques pueden ser bastante específicos del proyecto, por lo que es difícil proporcionar plantillas de aplicaciones "predeterminadas" que puedan conectarse a cualquier proyecto.Ha habido algunos intentos de establecer convenciones de nomenclatura estándar para las plantillas base de todo el sitio y los bloques que definen, pero no he visto un estándar emerger aún (la forma en que hacen las cosas al Pinax es probablemente lo más cercano que tenemos a un estándar).
Re "externalización de cadena", si se refiere a i18n y l10n, Django tiene un fuerte soporte para eso y lugares estándar donde coloca los archivos .po - marque el docs.
En esta respuesta, debe evitar los guiones bajos iniciales en \ _ \ _ init__.py para evitar que el motor de marcado los interprete como texto en negrita. – akaihola