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'
→ Ссылка