Я запустил приложение в Google App Engine сразу после его выхода, чтобы поиграть с технологией и поработать над домашним проектом, о котором я думал долгое время, но так и не успел начать. Результат - BowlSK . Однако по мере того, как он разрастался и добавлялись функции, стало действительно сложно поддерживать порядок - в основном из-за того, что это мой первый проект на Python, и я ничего о нем не знал, пока не начал работать.
Что у меня есть:
- Основной уровень содержит:
- все файлы .py (не знал, как заставить пакеты работать)
- все шаблоны .html для страниц основного уровня
- подкаталоги:
- отдельные папки для css, изображений, js и т. д.
- папки, содержащие шаблоны .html для URL-адресов подкаталога
Пример:
http://www.bowlsk.com/ сопоставляется с HomePage (пакет по умолчанию), шаблон на "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, indexes, main.py?
- Подпапка для кода + шаблонов. Таким образом, у меня есть класс обработчика прямо рядом с шаблоном, потому что на этом этапе я добавляю множество функций, поэтому изменения одного означают изменения другого. Опять же, нужно ли, чтобы это имя папки было первым именем пакета для моих классов? Я бы хотел, чтобы папка была "src", но я не хочу, чтобы мои классы были "src.WhateverPage"
Есть лучшая практика? С Django 1.0 на горизонте, могу ли я что-то сделать сейчас, чтобы улучшить мою способность интегрироваться с ним, когда он станет официальным движком шаблонов GAE? Я бы просто начал пробовать эти вещи и смотреть, что кажется лучше, но поддержка рефакторинга pyDev, похоже, не очень хорошо справляется с перемещением пакетов, поэтому, вероятно, будет нетривиальной задачей заставить все это снова работать.