Измените префикс представления в обходе пирамиды с "@@" на "+" - PullRequest
1 голос
/ 13 декабря 2010

Я смотрю на перемещение веб-приложения с пилонов на пирамиду (формально repoze.bfg), потому что обход будет соответствовать моему приложению намного лучше, чем отправка URL.

В настоящее время, когда у меня есть объект с несколькими представлениями, имена URL имеют префикс «+» в URL. e.g.:

/path/to/obj/   (default view)
/path/to/obj/+custom_view1
/path/to/obj/+custom_view2
/path/to/obj/+edit
/path/to/obj/+delete
/path/to/obj/sub_obj/

В Pyramid есть функция, позволяющая справиться с этим, но она использует префикс "@@". Есть ли способ изменить это на «+», чтобы я мог сохранить свои URL-адреса одинаковыми (вы знаете, что они говорят о классных URL-адресах) и использовать эту функцию.

1 Ответ

3 голосов
/ 08 января 2011

Да и нет, вы можете изменить префикс представления с "@@", но новый префикс также должен иметь длину 2 символа, см. sources для traverser.

Подклассы ResourceTreeTraverserи затем, зарегистрировав его вместо значения по умолчанию, нужно сделать следующее:

from pyramid.traversal import ResourceTreeTraverser as BaseResourceTreeTraverser

class ResourceTreeTraverser(BaseResourceTreeTraverser):
    VIEW_SELECTOR = "++"

from pyramid.config import Configurator
from pyramid.interfaces import ITraverser
from zope.interface import Interface

config = Configurator()
config.registry.registerAdapter(ResourceTreeTraverser, (Interface,), ITraverser)

Лично я считаю, что VIEW_SELECTOR должен быть реорганизован, чтобы разрешить любые префиксы представления длины.

...