Новая структура файлов / каталогов Pyramid (Pylons) вызывает у меня некоторую путаницу - PullRequest
9 голосов
/ 09 ноября 2010

Я уже некоторое время занимаюсь разработкой в ​​Pylons и недавно узнал, что они объединяются с другой средой для создания Pyramid.

Я просматривал пример кода , чтобы увидеть различия, и это вызывает некоторое замешательство ...

Например, контроллеры были заменены представлениями. Не большая проблема ... Но что мне кажется интересным, так это то, что для них нет каталогов. Это просто один файл: views.py.

Как работает эта новая структура MVC? Я записываю все свои действия в этот файл? Это может раздражать, если у меня есть действия с одинаковыми именами (например, несколько индексов): /

Не могли бы вы указать мне несколько хороших руководств / документации о том, как использовать этот фреймворк?

Ответы [ 2 ]

26 голосов
/ 09 ноября 2010

Поскольку различные методы конфигурации, относящиеся к представлению (config.add_view, config.add_handler), требуют, чтобы вы указали точечное имя в качестве класса или функции для использования в качестве представления или обработчика, вы можете расположить свой код так, как вам нравится.

Например, если ваше имя пакета проекта было myproject и вы хотите разместить все ваши представления в подпакете Python в пакете myproject с именем "views" (см. http://docs.python.org/tutorial/modules.html#packages) вместоотдельные просмотры файл , вы можете:

  • Создать каталог views внутри пакета mypackage.

  • Перемещение существующего views.py файла в файл внутри нового каталога views с именем, скажем, blog.py.

  • Создание файла в новом *Каталог 1028 * с именем __init__.py (он может быть пустым, это просто говорит Python, что каталог views представляет собой пакет .

Затем измените __init__.py вашего myproject проекта ( не __init__.py, который вы только что создали в каталоге views,в родительском каталоге), например:

config.add_handler('myhandler', '/my/handler', handler='mypackage.views.MyHandler')

Кому:

config.add_handler('myhandler', '/my/handler', handler='mypackage.views.blog.MyHandler')

Затем можно продолжить добавление файлов вкаталог views и ссылается на представления или классы / функции обработчика в этих файлах через пунктирное имя, переданное как handler= или view=.

5 голосов
/ 05 июля 2012

Вот один ответ, который должен быть довольно простым.Этот вопрос был задан, когда пирамида 1.3 еще не вышла.Так что забудьте о обработчиках python, так как новый декоратор сейчас довольно неплохо справляется.

Но просто для начала: у Пирамиды нет общей структуры.Вы можете написать целое приложение в одном файле, если хотите.Другими словами, если вам понравилось, как были построены пилоны, вы можете пойти с этим.Если вы предпочитаете настроить свою собственную структуру, то сделайте это.

Если вашему сайту не нужно больше одного файла, тогда ... ПОЙДИТЕ ЭТО !!!Все, что вам действительно нужно, это то, что это работает.

У меня лично есть такая структура

- root
    - __init__.py # all setup goes there
    - security.py # where functions related to ACL and group_finder
    - models.py or models/ # where all my models go
    - views.py or views/   # where all my views go 
    - templates
       - modelname
          - all template related to this resource type

    - scripts # where I put my scripts like backup etc
    - lib # all utilities goes there
    - subscribers # where all events are defined

Мой пакет представления иногда может быть разбит на несколько файлов, где я группирую представления по ResourceType.

Если вы используете контекст для сопоставления видов вместо маршрутов.Вы можете сделать несколько довольно приятных вещей с view_defaults и view_config .

view_defaults устанавливает некоторые значения по умолчанию для класса, а view_config устанавливает еще несколько конфигураций дляdefs использует значения по умолчанию, предоставленные view_defaults, если присутствуют.

...