JavaScript и Django

У меня есть JavaScript файл, воспроизводящий музыку потоково из какой-либо папки, можно ли как-то в JavaScript передать определенный список файлов, котрые должны воспроизводится потоково, ведь JavaScript это статический файл и там не работает шаблонизатор, или придется делать несколько скриптов?

Непонятно что именно надо.

Можно например ajax запрос сделать.

Можно выводить содержимое <script>, например, значение какой-нибудь глобальной переменной или параметры для вызова функции.

<script>
myFunc({{ data }})
</script>

То есть передавать в JavaScript-фунцию посты, для которых необходимо сделать потоковое воспроизведение (вернее будет сказать название музыкльных файлов) ?

Ну это просто вывод любого текста как и в остальных частях шаблона.

Чтобы весь пост передать надо в JSON сериализовать.

У меня есть js, хранящий адрес музыкальных файлов и прочую информацию о них:

var listAudio = [
    {
      name:"Artist 1 - audio 1",
      file:"https://www.soundhelix.com/examples/mp3/SoundHelix-Song-10.mp3",
      duration:""
    },
    {
      name:"Artist 2 - audio 2",
      file:"https://www.soundhelix.com/examples/mp3/SoundHelix-Song-5.mp3",
        duration:""
    },
    {
      name:"Artist 3 - audio 3",
      file:"https://file-examples.com/wp-content/uploads/2017/11/file_example_MP3_1MG.mp3",
      duration:""
    }
  ]

И я могу обратится к listAudio через html и динамически изменять его? То есть получить какой-то отфильтрованный список музыкальных файлов и передать его в listAudio?

<script>
    var  listAudio = ' что-то там '
</script>

Ну так я ж говорю, надо вывести

глобальные переменные обычно так создают в JS:

window.myGlobalVar = 42

В любом случае надо просто сформировать Питоном нужную строку с данными и вывести внутри <script>.

Можно в Питоне создать массив словарей и в JSON сериализовать.

import json

data = [
    { 'url': 'ya.ru', 'name': 'yandex' }, 
    {'url': 'google.com', 'name': 'google'}
]

print(json.dumps(data)) # '[{"url": "ya.ru", "name": "yandex"}, {"url": "google.com", "name": "google"}]'

В питоне я формирую список словарей для передачи в js:

data = []
for post in posts:
	s = {}
	s['name'] = post.name
	s['file'] = post.music_file.url
	data.append(s)

Скрипт я указал в html файлe, для удобной передачи данных в js, но как я понял шаблонизатор в <script> не работает, т.е, я не могу сделать так:

var listAudio = {{data}};

Как можно решить эту проблему?

Так было ж выше

Это сделал:

data_1 = json.dumps(data)

JS ругается на скобки:
Снимок экрана (12)

Он ругается не на скобки, а на то, что так и осталось {{data_1}}.

Это где?

Оно точно было просто внутри <script> в шаблоне, а не в каком-нибудь отдельном статичном файле?

Да, это просто в шаблоне, внутри <script>

Тогда должно работать.
Шаблонизатору всё равно внутри чего оно, это просто текст.

mytemplate.html

<script>
window.myData = {{data}}
</script>

myscript.js

alert('hello, ' + window.myData.user.name)

Почему то все файлы определяются как undefined, а вот что в одном из словарей:

{&quot;name&quot;: &quot;some_song_name&quot;, &quot;file&quot;: &quot;/media/tracks/.jpg&quot;}

{{data|safe}}

Почему выбор пал на Питон, он ведь тяжеловесный?

Тут и не поспоришь)
Возможно имело смысл учить php, но не хотелось изучать из-за его направленности только почти в веб-разработку. Тем более тут выпала возможность изучать питон в яндекс лицее)

PHP минимизирует нагрузку на сервер, актуально для высоко-нагруженных ресурсов. Как пример - интернет магазин…

Не почти, а именно…
Определяйтесь к чему стремитесь…

Так на РНР в основном с унылым древним вордпрессом работают. А более интересных проектов/компаний/вакансий примерно одинаково и на РНР, и на Питоне, и на Руби, при этом с последними двумя как-то приятнее работать.

А кто там тяжеловеснее еще надо подумать как это оценить )

1 лайк

Из-за чего может возникать такая ошибка?

127.0.0.1/:438 Uncaught SyntaxError: Unexpected end of input

Возникает она в закрывающемся теге </script>

Так а в коде что?