Я запустил приложение в 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, похоже, не очень хорошо справляется с перемещением пакетов, поэтому, вероятно, будет нетривиальной задачей заставить все это снова работать.
источник
Мой обычный макет выглядит примерно так:
__init__.py
- общий функционал, включая базовый класс обработчика запросовЯ могу привести примеры того, как выглядят мои app.yaml, request.py, lib / init .py и образцы контроллеров, если это не ясно.
источник
Сегодня я реализовал шаблон движка Google app и проверил его на github. Это примерно так, как описано выше Ником Джонсоном (который раньше работал в Google).
Перейдите по этой ссылке gae-template
источник
Я думаю, что первый вариант считается лучшим. И сделайте папку с кодом своим первым пакетом. Проект Ритвельда, разработанный Гвидо ван Россумом, - очень хорошая модель, на которой можно учиться. Взгляните на это: http://code.google.com/p/rietveld
Что касается Django 1.0, я предлагаю вам начать использовать магистральный код Django вместо встроенного в порт django GAE. Опять же, посмотрите, как это делается в Ритвельде.
источник
Мне нравится webpy, поэтому я использовал его как структуру шаблонов в Google App Engine.
Мои папки с пакетами обычно организованы следующим образом:
Вот пример.
источник
Я не совсем в курсе последних передовых практик и т. Д., Когда дело доходит до макета кода, но когда я делал свое первое приложение GAE, я использовал кое-что из вашего второго варианта, когда код и шаблоны находятся рядом друг с другом.
Для этого было две причины: во-первых, он держал код и шаблон рядом, а во-вторых, у меня был макет структуры каталогов, имитирующий структуру веб-сайта, что (для меня) немного упрощало запоминание, где все находится.
источник