Найти - Пользователи
Полная версия: Модель в js?
Начало » Django » Модель в js?
1
Incommoditer
Я новенький в программирование на 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 не получается.
Помогите пожалуйста, буду очень-очень благодарен. У меня опыта мало, прошу сильно не бить.
Cruzka
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, 'Бездельничаю'));
?
Incommoditer
Вообще ничего не выводит, при:

{% 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)).
GreyZmeem
{% for position in position %}
У вас одинаково называются переменные.
Попробуйте {% for p in … %} или проверьте имя переменной которую вы передаете в контексте.
Incommoditer
Попробовал, не помогло. Данные поступают в js, я во View классе передаю данные с модели с ограничением ( id =1) и все данные поступают в js, я так понял что цикл нельзя в js вставить. Можете пожалуйста подсказать, как можно в js передать массив данных из модели?
botinag
А как у вас выглядит шаблон, с которым работает вьюха?
так
...
<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>
...
?
Второй вариант не будет работать, в отличии от первого.
Incommoditer
<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 %}
inoks
Можно использовать фильтр stringformat

{{position.position_lat|stringformat:"f"}}
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB