Я использую пилоны, и некоторые из моих URL содержат неанглийские символы, такие как:
http://localhost:5000/article/111/文章标题
В большинстве случаев это не будет проблемой, но в моем модуле входа в систему,после того, как пользователь вышел из системы, я пытаюсь получить referer
из request.headers
и перенаправить на этот URL.
if user_logout:
referer = request.headers.get('referer', '/')
redirect(referer)
К сожалению, если URL содержит неанглийские символы и сбраузер IE, он сообщит о такой ошибке (Firefox в порядке):
WebError Traceback:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd5 in position 140: ordinal not in range(128)
View as: Interactive (full) | Text (full) | XML (full) clear this
clear this
URL: http://localhost:5000/users/logout
Module weberror.evalexception:431 in respond view
Есть способ исправить это (но не очень хорошо), используйте urllib.quote()
для преобразования URL перед перенаправлением.
referer = quote_path(url) # only quote the path of the url
redirect(referer)
Это не очень хорошее решение, потому что оно работает, только если браузер IE, и очень скучно.Есть ли хорошее решение?