У меня есть 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 ругается на скобки:
Он ругается не на скобки, а на то, что так и осталось {{data_1}}
.
Это где?
Оно точно было просто внутри <script>
в шаблоне, а не в каком-нибудь отдельном статичном файле?
Да, это просто в шаблоне, внутри <script>
Тогда должно работать.
Шаблонизатору всё равно внутри чего оно, это просто текст.
mytemplate.html
<script>
window.myData = {{data}}
</script>
myscript.js
alert('hello, ' + window.myData.user.name)
Почему то все файлы определяются как undefined, а вот что в одном из словарей:
{"name": "some_song_name", "file": "/media/tracks/.jpg"}
{{data|safe}}
Почему выбор пал на Питон, он ведь тяжеловесный?
Тут и не поспоришь)
Возможно имело смысл учить php, но не хотелось изучать из-за его направленности только почти в веб-разработку. Тем более тут выпала возможность изучать питон в яндекс лицее)
PHP минимизирует нагрузку на сервер, актуально для высоко-нагруженных ресурсов. Как пример - интернет магазин…
Не почти, а именно…
Определяйтесь к чему стремитесь…
Так на РНР в основном с унылым древним вордпрессом работают. А более интересных проектов/компаний/вакансий примерно одинаково и на РНР, и на Питоне, и на Руби, при этом с последними двумя как-то приятнее работать.
А кто там тяжеловеснее еще надо подумать как это оценить )
Из-за чего может возникать такая ошибка?
127.0.0.1/:438 Uncaught SyntaxError: Unexpected end of input
Возникает она в закрывающемся теге </script>
Так а в коде что?