я не могу взять символ «?» в URL-адресе URL-адреса Джанго

-1

Я пытаюсь ввести django для перенаправления перенаправления. Я предоставляю URL-адрес, и я хочу перенаправить предоставленный URL-адрес.

в моем urls.py:

urlpatterns = patterns('',
 url(r'^redirect/(?P<name>.*)$', redirect),
 # ...
)

когда я тестирую функцию со стандартной ссылкой (например: google.com), она отлично работает.

когда я тестирую функцию со ссылкой, содержащей "?" характер, только часть перед "?" учитывается.

Пример:

"GET /redirect/http://www.polyvore.com/lords_liverpool_hey_jude_tee/thing?id=53713291 HTTP/1.1" 302 0

name = http://www.polyvore.com/lords_liverpool_hey_jude_tee/thing

?id=53713291 не принимается во внимание....

хотя это .* означает весь добрый характер, неправильно?

Вы знаете, что происходит? и как взять URL-адрес entiere, какой персонаж он содержит?

Большое спасибо за Вашу помощь.

Теги:
special-characters
url

2 ответа

0

Вы переходите в регулярное выражение, поэтому вам нужно избегать специальных символов (например, \?)

Но если вы пытаетесь передать параметры querystring, вы захотите обработать это по-другому: qaru.site/questions/173149/...

0

Кажется, вы не понимаете, как работает URL. Все после ? анализируется как аргументы для вашего текущего представления. Если вы печатаете данные в своем request.GET dict, вы найдете что-то вроде:

 {'id': 53713291}

Единственный способ исправить это, чтобы urlencode ваш URL-адрес в аргументе и декодировать его перед перенаправлением.

 >>> import urllib
 >>> urllib.quote_plus("http://www.polyvore.com/lords_liverpool_hey_jude_tee/thig?id=53713291")
 'http%3A%2F%2Fwww.polyvore.com%2Flords_liverpool_hey_jude_tee%2Fthing%3Fid%3D5313291'
 # You should make your URL with this value, for example:
 # /redirect/http%3A%2F%2Fwww.polyvore.com%2Flords_liverpool_hey_jude_tee%2Fthing%3Fid%3D5313291
 # And in your view, use unquote_plus before the redirection:
 >>> urllib.unquote_plus('http%3A%2F%2Fwww.polyvore.com%2Flords_liverpool_hey_jude_tee%2Fthing%3Fid%3D5313291')
 'http://www.polyvore.com/lords_liverpool_hey_jude_tee/thing?id=5313291'

Дополнительная информация о Query String в Википедии.

  • 0
    Я не думаю, что это поможет ему. Он должен начать с изучения регулярных выражений.
  • 0
    Проблема не в регулярном выражении. Это о том, как URL работает со стандартом HTTP. ? характер имеет особое значение, не забывайте это. Все после него принимается за параметры GET.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню