#django #video #static #digital-ocean #digital-ocean-spaces
#django #Видео #статический #digital-ocean #digital-ocean-spaces
Вопрос:
Во время разработки моего проекта я мог отображать видеофайлы с помощью своих шаблонов следующим образом:
<video width="200" controls>
<source src='{{ MEDIA_URL }}{{ post.video }}' type='video/mp4'>
Your browser does not support the video tag.
</video>
MEDIA_URL
был направлен в media
папку в settings.py:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
Сейчас я работаю и использую Digital Ocean Spaces, мои статические и мультимедийные файлы обслуживаются STATIC_URL
. Когда пользователь создает сообщение, содержащее видеофайл, я вижу, что оно загружено в пробелах, я также могу просмотреть его через администратора Django. Но я больше не могу найти код, который мне нужен, чтобы сделать его воспроизводимым на сайте. Я просто вижу серое поле, сообщающее мне, что файл не поддерживается. Я пытался изменить {{ MEDIA_URL}}
{{ STATIC_URL }}
, я тоже пытался <source src='{% static "post.video" %}' type='video/mp4'
, но ни один из них не сработал. Я не могу найти ответ на этот вопрос нигде в Интернете. Надеюсь, кто-нибудь может помочь.
Комментарии:
1. Вы должны настроить Nginx следующим образом location /static/ { root YOUR_PROJECT_PATH; } location /media/ { root YOUR_PROJECT_PATH;; }
2. При развертывании в digitalocean какой серверный движок вы используете? Я предполагаю, что вы развернули на droplet?
3. Означает ли это, что ваши видео находятся в других папках, кроме css и изображений?
4. Таким образом, это означает, что ваши медиа и статические данные находятся в одной основной папке. В этом случае вы должны использовать STATIC_URL. Что появляется, когда вы проверяете элемент в своем браузере, чтобы проверить путь к STATIC_URL? Вы также сделали /manage.py собирать статику?
5. Можете ли вы распечатать свою консоль и сделать снимок экрана? Вы видите какие-либо ошибки? Возможно, ошибки рендеринга видео?
Ответ №1:
Решение состояло в том, чтобы изменить шаблон на чтение:
<video width="200" controls>
<source src='{{ STATIC_URL }}{{ post.video.url }}' type='video/mp4'>
Your browser does not support the video tag.
</video>