2013-06-06 2 views
0

Я довольно новичок в плагинах Trac и python в целом. В течение большей части этого дня я искал способ получить параметры в плагин Trac, который я создаю, с помощью запроса URL.Плагин Trac с поддержкой HTTP получает параметры

Так что, если у меня был плагин на сайте wikitest, я мог бы получить доступ к нему, как это, а также предоставить аргумент:

http://localhost:8080/tracEnvironment/wiki/wikiTest?name=annie 

Тогда мой плагин, расположенный на wikitest может получить имя при условии через URL. Возможно ли это?

Я нашел несколько ответов на подобные проблемы, которые предполагают использование фреймворка python, но я думаю, что мой случай отличается, потому что я имею дело с плагином Trac вместо автономного скрипта.

Что было бы лучшим способом получить эти данные в моем плагине?

ответ

0

Вы говорите о «своем» плагине Trac. Поэтому я доверяю вам знать about setting up a Trac development environment. Далее вам нужно знать, как развернуть плагин Trac. Если это довольно просто, достаточно одного плагина для одного файла. Таким образом, вы можете скопировать в папку/plugins и использовать ее сразу, возможно, сначала нужно перезапустить веб-сервер.

Ознакомиться с отличным Trac component architecture. Код для действий по запросам должен, в общем, использовать IRequestHandler (от trac.web.api), one of several интерфейсов точек расширения. Прочтите существующий код плагина на Trac-Hacks.org, чтобы лучше понять, как его использовать. Его довольно легко проверить, если запрос приходит в направлен на путь, определенный в расширении

if req.path_info.startswith('wikitest'): 
    # Do something useful. 

, чтобы проверить тип запроса и сделать более

if req.method == 'GET': 
    # Handle the request 
    if reg.args.get('name'): 
     name = req.args['name'] 
     self.log.debug('Got request for name=%s' % name) 

Читать больше кода, обсудить в # трассировать IRC-канал на freenode.net и продолжать спрашивать, как вы прогрессируете.

+0

Большое спасибо, сэр, вы были наиболее полезны. Что беспокоило меня больше всего было, откуда получить переменную req. Я быстро обнаружил в примерах трассировки, что req предоставляется Formatter из trac.wiki. – Primoz

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