Структура проекта для Google App Engine

| | | | | | | | | | | | | | | | | | | |

Я запустил приложение в Google App Engine сразу после его выхода, чтобы поэкспериментировать с технологией и поработать над любимым проектом, о котором я давно думал, но никак не мог начать. Результатом будет BowlSK. Однако по мере того, как он рос и добавлялись функции, стало очень сложно поддерживать порядок — в основном из-за того, что это мой первый проект на Python, и я ничего о нем не знал, пока не начал работать.

Что у меня есть:

  • Основной уровень содержит:
    • все файлы .py (не знал, как заставить работать пакеты)
    • все шаблоны .html для страниц основного уровня
  • Подкаталоги:
    • отдельные папки для css, изображений, js и т. д.
    • папки, содержащие шаблоны .html для URL-адресов типа подкаталога

Пример:
http://www.bowlsk.com/ сопоставляется с домашней страницей (пакет по умолчанию), шаблон в "index.html"
http://www.bowlsk.com/games/view-series.html?series=7130 сопоставляется с ViewSeriesPage (опять же, пакет по умолчанию), шаблон в "games/view-series.html"

Это противно. Как мне реструктурировать? У меня было 2 идеи:

  • Главная папка, содержащая: appdef, indexes, main.py?

    • Подпапка для кода. Это должен быть мой первый пакет?
    • Подпапка для шаблонов. Иерархия папок будет соответствовать иерархии пакетов.
    • Отдельные подпапки для css, изображений, js и т. д.
  • Главная папка, содержащая appdef, индексы, основные .py?

    • Подпапка для кода и шаблонов. Таким образом, у меня есть класс обработчика прямо рядом с шаблоном, потому что на этом этапе я добавляю множество функций, поэтому изменения в одном означают изменения в другом. Опять же, должно ли это имя папки быть первым пакетом? имя для моих классов? Я бы хотел, чтобы папка была "src", но я не хочу, чтобы мои классы были "src.WhateverPage"

Есть ли передовая практика? С Django 1.0 на горизонте, могу ли я что-то сделать сейчас, чтобы улучшить мою способность интегрироваться с ним, когда он станет официальным механизмом шаблонов GAE? Я бы просто начал пробовать эти вещи и посмотреть, что кажется лучше, но поддержка рефакторинга pyDev, похоже, не очень хорошо справляется с перемещением пакетов, поэтому, вероятно, будет нетривиальной задачей снова заставить все это работать.