Уведомления

Группа в Telegram: @pythonsu

#1 Март 5, 2015 16:44:30

Incommoditer
Зарегистрирован: 2015-03-05
Сообщения: 4
Репутация: +  0  -
Профиль   Адрес электронной почты  

Модель в js?

Я новенький в программирование на python и django. В общем, пытаюсь расставить массив маркеров на карте Google maps v3. Запихиваю координаты в массив. Так работает:

    myPlaces.push(new Place('Иванов', 51.52059060571361, 30.762081299999977, 'Иду на задание'));
    myPlaces.push(new Place('Петров', 51.51840087769148, 30.753783113430814, 'Бездельничаю'));
У меня есть таблица с координатами и информацией, когда пытаюсь из django циклически в массив элементы добавить, то ничего не происходит.

{% for position in position %}
 
    myPlaces.push(new Place("{{position.position_title}}", {{position.position_lat}},{{position.position_lng}}, "{{position.position_description}}"));
 
{% endfor %}

Пробовал всю информацию из модели циклически вывести в body, всё выводит, а вот в js не получается.
Помогите пожалуйста, буду очень-очень благодарен. У меня опыта мало, прошу сильно не бить.

Офлайн

#2 Март 5, 2015 18:42:21

Cruzka
Зарегистрирован: 2015-03-05
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Модель в js?

Python – бэкенд, JS – фронтенд.
Что получается на странице после

{% for position in position %}
 
    myPlaces.push(new Place("{{position.position_title}}", {{position.position_lat}},{{position.position_lng}}, "{{position.position_description}}"));
 
{% endfor %}
и как сильно оно отличается от
 myPlaces.push(new Place('Иванов', 51.52059060571361, 30.762081299999977, 'Иду на задание'));
    myPlaces.push(new Place('Петров', 51.51840087769148, 30.753783113430814, 'Бездельничаю'));
?

Офлайн

#3 Март 5, 2015 19:11:19

Incommoditer
Зарегистрирован: 2015-03-05
Сообщения: 4
Репутация: +  0  -
Профиль   Адрес электронной почты  

Модель в js?

Вообще ничего не выводит, при:

{% for position in position %}
 
    myPlaces.push(new Place("{{position.position_title}}", {{position.position_lat}},{{position.position_lng}}, "{{position.position_description}}"));
 
{% endfor %}

Пробовал без цикла вывести из модели информацию, всё получается. (С ограничением в View Position.objects.all().get(id=2)).

Офлайн

#4 Март 6, 2015 10:45:16

GreyZmeem
От: Киев
Зарегистрирован: 2013-12-03
Сообщения: 147
Репутация: +  34  -
Профиль   Отправить e-mail  

Модель в js?

{% for position in position %}
У вас одинаково называются переменные.
Попробуйте {% for p in … %} или проверьте имя переменной которую вы передаете в контексте.

Офлайн

#5 Март 6, 2015 19:51:40

Incommoditer
Зарегистрирован: 2015-03-05
Сообщения: 4
Репутация: +  0  -
Профиль   Адрес электронной почты  

Модель в js?

Попробовал, не помогло. Данные поступают в js, я во View классе передаю данные с модели с ограничением ( id =1) и все данные поступают в js, я так понял что цикл нельзя в js вставить. Можете пожалуйста подсказать, как можно в js передать массив данных из модели?

Офлайн

#6 Март 7, 2015 08:27:03

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

Модель в js?

А как у вас выглядит шаблон, с которым работает вьюха?
так

...
<script type="text/javascript">
{% for position in position %}
    myPlaces.push(new Place("{{position.position_title}}", {{position.position_lat}},{{position.position_lng}}, "{{position.position_description}}"));
{% endfor %}
</script>
...
или так
...
<script type="text/javascript" src="path/to/js"></script>
...
?
Второй вариант не будет работать, в отличии от первого.

Офлайн

#7 Март 7, 2015 10:52:31

Incommoditer
Зарегистрирован: 2015-03-05
Сообщения: 4
Репутация: +  0  -
Профиль   Адрес электронной почты  

Модель в js?

<script type="text/javascript">
Всем спасибо за помощь, я нашел выход. Очень долго возился и заметил что у меня функция в js требует на вход координаты в формате float, а django выводит вместо точки в нецелом числе, запятую. Костыльно, но в я поменял тип данных полей полей из Float в CharField.
Оставлю работающий вариант, вдруг кому-то поможет.
{% for position in position %}
    var latString  = String({{position.position_lat}});
    var lat = parseFloat(latString);
    var lngString = String({{position.position_lng}});
    var lng = parseFloat(lngString);
    myPlaces.push(new Place("{{position.position_title}}", lat ,lng, "{{position.position_description}}"));
{% endfor %}

Офлайн

#8 Март 7, 2015 23:47:09

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Модель в js?

Можно использовать фильтр stringformat

{{position.position_lat|stringformat:"f"}}

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version