django: отправка адреса юникода в googmaps из формы - PullRequest
0 голосов
/ 10 января 2012

Я использую googlemaps http://py -googlemaps.sourceforge.net / , чтобы показать некоторую информацию о путешествии. я посылаю start_address и end_address через форму и вычисляю маршрут на стороне сервера.

все работает нормально, когда я использую базовые символы ascii в адресе, но если я использую дикие хорватские символы, такие как 'čćšž' , я получаю "'ascii' кодек не может кодировать символ u ' \ u010d 'в положении ... ".

если я использую

from googlemaps import GoogleMaps
directions = GoogleMaps().directions(smart_str(start_address), smart_str(end_address))

как команда в оболочке работает нормально , но не при запуске через тестовый сервер на сайте. start_address и end_address оба имеют тип Unicode.

так, как мне предположить, чтобы сформировать start_address для того, чтобы он работал правильно с целым юникодом?

Edit:

после того, как еще немного поигрался, вот код, который наконец-то работает:

from django.shortcuts import render_to_response
from django.utils.encoding import smart_unicode, smart_str
from googlemaps import GoogleMaps

def calculations(request):
    if request.method == 'POST':
        trip = {}
        start_address = smart_str(request.POST.get('start_address'))
        end_address = smart_str(request.POST.get('end_address'))
        directions = GoogleMaps().directions(start_address, end_address)
        trip['length'] = directions['Directions']['Distance']['html']
        trip['duration'] = directions['Directions']['Duration']['html']
        return render_to_response( 'index.html', {'trip':trip, }, context_instance = RequestContext(request) )

Вы можете считать вопрос закрытым:)

1 Ответ

0 голосов
/ 10 января 2012

ascii' codec can't encode character u'\u010d' in position... означает, что django пытается конвертировать из Unicode в Ascii. Какова ваша settings.DEFAULT_CHARSET ценность?

Попробуйте установить settings.DEFAULT_CHARSET = 'UTF-8'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...