Загрузка медиа-файлов в Django - PullRequest
0 голосов
/ 19 января 2020

Я пытаюсь создать домашний медиа-сервер, используя Django. Для этого я хочу, чтобы мои медиафайлы хранились на внешнем USB. Теперь из моего кода, когда я пытаюсь загрузить видео, это не работает. Я даже пытался жестко закодировать путь, чтобы увидеть, работает ли он. Когда я запускаю Django, он не работает, но когда я непосредственно открываю HTML в chrome, он отлично работает.

Код шаблона заполнителя:

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <video width="640" height="480" controls autoplay>
      <source src="E:/Programming\Projects\Youtube Downloader\Ariana Grande - One Last Time (Official).mp4" type="video/mp4">
    </video>
    <p><b>Note:</b> The autoplay attribute will not work on some mobile devices.</p>
  </body>
</html>

Actual Шаблон:

{% extends 'MediaPlayer/layout.html' %}

{% block MainContent %}
    {{ video_source}}
    <video width="640" height="360">
        <source src="E:/OneLastTime.mp4" type="video/mp4">
    </video>
    <p><b>Note:</b> The autoplay attribute will not work on some mobile devices.</p>
{% endblock %}

{% block PageScripts %}
{% endblock %}

Просмотр, вызывающий шаблон:

def select_video_page(request, video_id):
    file_path = FILE_SCANNER.files["video"][video_id]
    context = {
        "video_source": file_path,
        "title": '.'.join(file_path.split("\\")[-1].split(".")[:-1])
    }
    return render(request, "MediaPlayer/selectvideopage.html", context)

Все на странице работает отлично, шаблон загружается и все. Единственная проблема, с которой я сталкиваюсь - это видео файл. Почти все решения, которые я нашел, требуют хранения мультимедиа в каталоге media в папке Django, но это противоречит цели моего проекта.

1 Ответ

0 голосов
/ 19 января 2020

Если вы опубликуете свой файл settings.py, это поможет определить вашу проблему.

Вы пытаетесь подавать статические данные c из своего проекта Django. Вам необходимо правильно указать, какой каталог вы хотите использовать в качестве носителя root, т.е. ваш USB-накопитель. Кроме того, я не вижу какого-либо нетривиального способа включить приложение django для поддержки горячего подключения USB-накопителя, это также может привести к другим проблемам, если носитель отключен.

This HTML указывает, что вы не передаете файлы с медиа-сервера (если вы не определили свой MEDIA_URL как E: в settings.py)

Даже если вы получили этот URL для рендеринга видео, он не будет работать для любое другое сетевое устройство, если файл не обслуживается медиа-сервером django с указанным ниже путем к файловой системе.

<source src="E:/OneLastTime.mp4" type="video/mp4"> 

django stati c руководство по обслуживанию файлов

Скорее всего, вам потребуется использовать модуль ОС python, чтобы перейти к каталогу на вашем USB-диске, а затем объявить этот каталог как носитель root для django для обслуживания файлов из него. Могут быть встроены функции безопасности, которые не позволяют обслуживать файлы за пределами root проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...