2010-12-13 1 views
1

Я просматриваю веб-приложение от pylons до pyramid (формально repoze.bfg), потому что обход подойдет моему приложению намного лучше, чем отправка URL.Изменить префикс представления в обход пирамиды с «@@» до «+»

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

/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/ 

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

+0

Это должно быть помечено как «пирамида», но оно новое, и мне не хватает репутации. –

+0

+ обычно используется для форм, которые создают новые объекты/элементы, поэтому я бы рекомендовал против этого, поскольку это может ввести в заблуждение. Тем не менее @@ (два туманных глаза, эта точка зрения, см. Ха-ха), возможно, тоже не самая красивая, но я не знаю, как ее изменить. Кстати, вам нужно использовать @@ в Pyramid? В Zope вам нужно только @@, если существует конфликт имен с подобъектом. –

+0

Если вы хотите +, почему бы просто не сделать его частью имени? 'Config.add_view (имя = '+ редактировать')'? – joeforker

ответ

3

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

подклассов 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 должен быть переработан, чтобы любое представление длины префиксов.

+1

Спасибо. Я видел этот код, но не мог понять, как он регистрирует пользовательский ITraverser. Я отправил запрос на перенос, чтобы разрешить просмотр селектора любой длины. https://github.com/Pylons/pyramid/pull/99 –

Смежные вопросы