У меня есть работающий виджет ввода автозаполнения JQueryUI, который прекрасно работает с моим бэкэндом Pyramid. Автозаполнение отправляет свой request.params['term']
по тому же URL-адресу, что и страница, на которой он находится, а Pyramid использует request_param='term'
в качестве предиката маршрута для отправки значения термина в мой запрос на просмотр базы данных.
Проблема, с которой я столкнулся сейчас, заключается в том, что мне нужно добавить больше виджетов автозаполнения на ту же страницу. Однако я не могу использовать один и тот же предикат маршрута term
, потому что оба виджета публикуют term
, и поэтому Pyramid не знает, куда отправить сообщение.
Я знаю, что вы можете создавать собственные предикаты в Pyramid, но, насколько я вижу, в 2 виджетах автозаполнения, с помощью которых я могу создавать собственные предикаты, нет ничего уникального.
Чтобы дать некоторый контекст, ниже приведено определение маршрута / вида. Это определение на самом деле является незаконным, потому что пирамида справедливо отказалась от идентичных предикатов, но оно служит для демонстрации моей дилеммы:
config.add_route('search_programs','/search/programs')
config.add_view(
'haystack.search.search_programs',
route_name='search_programs',
renderer='templates/search_programs.jinja2')
config.add_view(
'haystack.search.programtype_autocomplete',
route_name='search_programs',
request_param='term', renderer='json')
config.add_view(
'haystack.search.majorgenre_autocomplete',
route_name='search_programs',
request_param='term', renderer='json')
Что было бы замечательно, если бы у виджета автозаполнения была возможность указать произвольный ключ для публикации вместо просто «термина» каждый раз. Любая помощь будет потрясающей.