11/14/2012

tzf.pyramid_routing

Fizyk przygotował paczkę, za pomocą której w wygodny sposób można wczytywać ścieżki we frameworku Pyramid ;).

Instalacja przez pip:
pip install tzf.pyramid_routing

Github:
git clone https://github.com/fizyk/pyramid_routing.git
cd pyramid_routing
python setup.py install

Dodawanie ścieżek

Załóżmy, że tworzysz jakąś prostą appkę, gdzie za pomocą urla, chcesz zobaczyć profil jakiegoś użytkownika, statystyki (ogólne, jak i dla każdego usera z osobna) oraz prosty blog. Link do appki to: http://localhost:6543.

Struktura appki:
/my_app
  lib/
    routing/
      __init__.py
      blog.py
      user.py
  views/
    __init__.py
  __init__.py
development.ini

W pliku __init__.py aplikacji umieszczasz:
config.include('tzf.pyramid_routing')

W pliku konfiguracyjnym np. w development.ini  ustawiasz coś na wzór:
routing_package = my_app.lib.routing
gdzie my_app to nazwa aplikacji, a reszta to ścieżka do katalogu, gdzie będzie cały Twój routing.

W  katalogu routing, tworzysz 3 pliki: __init__.py, blog.py oraz user.py.

__init__.py
routes = [
    dict(name='index', pattern='/'),
    dict(name='statistics', pattern="/statistics"),
]

blog.py
routes = [
    dict(name='blog:index', pattern='/'),
    dict(name='blog:post', pattern="/post/{\d+}"),
]

user.py
routes = [
    dict(name='user:index', pattern='/{name}'),
    dict(name='user:statistics', pattern="/{name}/statistics"),
]

Co to tak właściwie robi? Nazwa modułu mówi o tym jak ma wyglądać pierwszy parametr ścieżki url. Np. dla modułu __init__.py będą to:
  • http://localhost:6543
  • http://localhost:6543/statistics
dla modułu blog.py:
  • http://localhost:6543/blog/
  • http://localhost:6543/blog/post/785
i dla modułu user.py:
  • http://localhost:6543/user/sromek
  • http://localhost:6543/user/sromek/statistics

Zmienna routes w modułach musi wskazywać na listę słowników, takich, która przyjmuje metoda pyramid.config.Configurator.add_route. Dokumentację paczki znajdziesz tutaj.