Мне нужно динамически вставлять данные маркеров (имя, широта, длина) в javascript, maps.js
.
В моем maps.js у меня сейчас есть:
var locations = [
[ locationData('listings1.html','images/listing-item-01.jpg',"listing name",'Address ', '4.5', '12'), 40.94401669296697, -74.16938781738281, 1, '<i class="im im-icon"></i>'],
[ locationData('listings2.html','images/listing-item-02.jpg','Name2','Place', '5.0', '23'), 40.77055783505125, -74.26002502441406, 2, '<i class="im im-icon"></i>'],];
И мне нужно иметь возможность загружать это динамически, используя цикл for, например.
{% if listings %}
var locations = [
{% for listing in listings %}
[ locationData({{ listing.url}} , {{ listing.name }} , {{ listing.place }}) ],
{% endfor %}
]
В настоящее время у меня есть статический файл maps.js, который я загружаю, используя:
<script type="text/javascript" src="{% static 'scripts/maps.js' %}"></script>
Я не могу вставить туда теги, потому что он вызывается статически. Однако, поскольку maps.js
равно static
, я не могу загружать такие теги, как {{ listing.location }} , {{ listing.lat }} , {{ listing.lng }}
и т. д.
Я попробовал 2 решения (и то, что описано в комментариях).
1) Я попытался загрузить небольшой
#template.html
<script>
var locations =
// python code
</script>
но это не сработало, я думаю, потому что locationData
— это функция, которая также определена в maps.js.
Я мог бы включить все maps.js
в template.html
, но это 230 строк кода.
2) Я попытался добавить maps.js
в папку приложения users
, например:
users/templates/users/maps.js
И внутри этого js я загрузил теги шаблона, определенные выше. В моих views.py я сделал:
def index(request):
js_file = "users/templates/users/maps.js"
return render(request, "users/template.html", context={"js_file": js_file })
#template.html
<script src="{{js_file}}"></script>
Тем не менее, я получаю сообщение об ошибке, что файл не может быть найден.