как получить близлежащие места, используя Google мест с Python и колбу - PullRequest
0 голосов
/ 25 января 2019

я пытаюсь найти близлежащие места, используя googleplaces с python и flask

я получаю эту ошибку: (UnboundLocalError: локальная переменная 'place_name', на которую ссылается до назначения)

вот мой код:

@app.route('/Search', methods=['POST', 'GET'])
@login_required
def Search():
    if request.method == 'POST':
        query_result = google_places.nearby_search(
            lat_lng={'lat':31.7917, 'lng' : 7.0926},
            radius=500,
            types=[types.TYPE_SHOPPING_MALL] or [types.TYPE_STORE])`

        if query_result.has_attributions:
            print(query_result.html_attributions)

        for place in query_result.places:
            place.get_details()
            place_name = place.name
            print(place.name)
            place_rating = place.rating
            print(place.rating)
            place_location = place.get_location
            print(place.get_location)
            for photo in place.photos:
                photo.get(maxheight=500, maxwidth=500)
                photo.mimetype
                photo.url
                photo.filename
                photo.data
            return render_template('Search.html', place_name, place_rating, place_location)
    else:
        return render_template('Search.html')```


#Note: i am new to python in general

1 Ответ

0 голосов
/ 25 января 2019
return render_template('Search.html', place_name, place_rating, place_location)

Выше недопустимый синтаксис.Когда вы передаете детали в шаблон, вам нужно сделать это следующим образом:

return render_template('Search.html', name = place_name,
                        rating = place_rating, location = place_location)

Переменные name, rating и location будут доступны в шаблоне как {{name}},{{rating}} и {{location}}.

Однако то, как вы разметили циклы for, означает, что при первом выполнении оператора return он остановит цикл и вернет шаблон с этими переменными.

Возможно, это то, что вы хотите, но вы можете передать query_result в шаблон и внедрить в шаблон цикл Jinja2 for для распечатки различных деталей места.Вы удалили бы циклы for и заменили весь этот блок на:

return render_template('Search.html', all_places = query_result)

Затем в шаблоне что-то вроде:

{% if all_places %}
{% for place in all_places %}
    <p><b>{{place.name}}</b> has a rating of <u>{{place.rating}}</u></p>
{% endfor %}
{% else %}
    <p>No places found.</p>
{% endif %}
...