Обработка ИРИ в Джанго - PullRequest
4 голосов
/ 08 декабря 2010

В документации Django есть [хороший раздел] по обработке строк с данными не-ASCII в URL. В частности, он представляет следующий пример того, как преобразовать строки Unicode для использования в URL:

>>> urlquote(u'Paris & Orléans')
u'Paris%20%26%20Orl%C3%A9ans'
>>> iri_to_uri(u'/favorites/François/%s' % urlquote(u'Paris & Orléans'))
'/favorites/Fran%C3%A7ois/Paris%20%26%20Orl%C3%A9ans'

Однако, похоже, нет указаний на то, как выполнить обратное преобразование!

Предполагая, что мое приложение получает URL /favorites/Fran%C3%A7ois/Paris%20%26%20Orl%C3%A9ans, как мне сопоставить его с /favorites/François/ и Paris & Orléans?

Нет функции django.utils.encoding.uri_to_iri для дополнения django.utils.encoding.iri_to_uri и django.utils.http.urlunquote для дополнения django.utils.http.urlquote()!

Примечание

Если это поможет, я использую Django 1.2 вместо

  • Python 2.5, Debian Linux 32-bit
  • Python 2.6, Windows 7 64-bit.

Ответы [ 2 ]

3 голосов
/ 08 декабря 2010

Стандарт urllib.unquote() должен нормально работать в этом случае:

>>> urllib.unquote('/favorites/Fran%C3%A7ois/Paris%20%26%20Orl%C3%A9ans')
'/favorites/Fran\xc3\xa7ois/Paris & Orl\xc3\xa9ans'
1 голос
/ 08 декабря 2010

Это потому, что urllib.unquote делает это для вас:

>>> import urllib
>>> print urllib.unquote('/favorites/Fran%C3%A7ois/Paris%20%26%20Orl%C3%A9ans')
/favorites/François/Paris & Orléans
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...