Вызов функции Django из шаблона? (должно быть легко) - PullRequest
0 голосов
/ 15 апреля 2011

Я уверен, что мне здесь чего-то не хватает, но я часами пытался обдумать это.Я очень новичок в Django, поэтому, пожалуйста, прости меня:

Как мне вызвать метод из шаблона?

В частности, я хотел бы загрузить страницуэтот автозапуск и элемент, а затем загрузите / воспроизведите другой файл с другим файлом.(Выбирается с помощью скрипта Python.)

Нужно ли определять это как пользовательский тег?Какую концепцию мне здесь не хватает?

Большое спасибо всем!Loren

Ответы [ 2 ]

2 голосов
/ 15 апреля 2011

Да, вы не можете вызывать функции (с аргументами) в шаблоне. Для этого templatetags .

Конечно, вы можете поменять шаблонизатор на более разрешительный, скажем, Jinja2 . Но я думаю, что решение слишком сложно для вашей ограниченной задачи.

Если вы заранее знаете свой плейлист, вы можете создать его по своему усмотрению и передать в шаблон.

Но использование python для воспроизведения мультимедиа и перенаправления, вероятно, не очень хорошая идея, если вообще возможно, разумным способом.

Как упомянул DTing в своем комментарии, это звучит как типичный вариант использования Javascript / JQuery. Есть много JQuery-плагинов. Найти тот, который соответствует вашим целям, не должно быть слишком сложно: взгляните, например, на jPlayer .

А если вы хотите испачкать руки, взгляните на эту статью: Создание пользовательского аудиоплеера HTML5 с помощью jQuery

1 голос
/ 16 апреля 2011

Я думаю, вы можете быть немного озадачены тем, как работают шаблоны в Django.Шаблон отвечает за создание строки на сервере.Эта строка полна разметки HTML.Тег шаблона используется для визуализации частей строки на основе данных сервера.

После создания этой строки она отправляется через веб-сервер клиенту.Помните, что это всего лишь строка.

С этого момента любой код, который должен быть выполнен, должен быть в javascript.Ваш пример относится к ожиданию завершения воспроизведения файла на клиенте - поэтому клиент (javascript) отвечает за ожидание завершения файла и запуска нового.Вы НЕ можете вызывать код Python с клиента, не отправив еще один HTTP-запрос на сервер.Теги шаблона не пересекают HTTP с клиентом.Это просто способ помочь серверу создать отправленную строку.

...