Django embed video не работает с HTTPS
После переноса сайта на Django на VPS перестали отображаться видео, добавленные через django-embed-video из-за смены протокола на HTTPS.
Пробовал делать, как сказано в инструкции по этому поводу, но ничего хорошего не получается:
<div class="row">
{% for my_video in addvideo_list %}
<div class="video">
{% video my_video query="rel=0&wmode=transparent" is_secure=True as my_video %}
{{ my_video.url }} # Получаем строку https://www.youtube.com/embed/8e7kiXsLvbg?rel=0&wmode=transparent
{% video my_video 'small' %} # Все равно нет HTTPS <iframe width="480" height="360" src="http://www.youtube.com/embed/1cCLguVQsMU?wmode=opaque" loading="lazy" frameborder="0" allowfullscreen></iframe>
{% endvideo %}
</div>
{% endfor %}
</div>
Подскажите, пожалуйста, как решить данную проблему?
views
class AddVideoListView(ListView):
request.scheme = 'https'
model = AddVideo
queryset = AddVideo.objects.exclude(published=False).order_by('?')
paginate_by = 21
Ответы (1 шт):
Автор решения: eri
→ Ссылка
Похоже is_secure как параметр теперь не используется.
Вместо этого переменная тащится отсюда HttpRequest.is_secure()
https://docs.djangoproject.com/en/3.2/ref/request-response/#django.http.HttpRequest.is_secure
Для деплоя на нгинкс добавьте
location / {
# ...
proxy_set_header X-Forwarded-Proto $scheme;
}
Как костыль можно во вьюхе воткнуть
request.scheme = 'https'