2012-04-29 2 views
1

Пример: /open/123/http://x.com/wordpress/?p=592Тип данных пути не принимает полный URL с '?' в нем

@route('/open/<item_id:int>/<url:path>') 
def open(item_id , url): 
    print url 

Выходной сигнал этого отпечатка

«http://x.com/WordPress /»

Что я хочу это полный URL

'http://x.com/wordpress/?p=592'

я хочу полный URL, потому что я собираюсь записать пользователь нажимает, а затем направляйте его к нему.

+1

что именно хочет acheive..you должна сделать свой вопрос немного яснее – cobie

+0

надеется, что это более ясно сейчас, спасибо :) – Faris

ответ

3

Маршруты только соответствует URL путь, а не запроса (RFC 3986 раздел 3.4). Попробуйте вместо этого:

@route('/open/<item_id:int>/<url:path>') 
def open(item_id , url): 
    if request.query_string: 
     url += '?' + request.query_string 
    print url 
+0

Работал как шарм, спасибо! – Faris

1

вам нужно будет что-то вроде

@route('/open/<item_id:int>/<url:path>/<stuff_after_slash:whatevertype>') 
def open(item_id , url, stuff_after_slash): 
    print url + stuff_after_slash 
+0

Я считаю, что функция маршрута принимает только путь без вещей за пределами? потому что он рассматривается как часть с запросом :( – Faris

+1

вы можете извлечь _query_ и добавить к пути вручную, чтобы получить полный необходимый путь. – cobie

+0

спасибо cobie :) – Faris

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