Использование Django для показа видео YouTube в шаблонах - PullRequest
2 голосов
/ 10 сентября 2011

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

Код в модели:

from django.db import models

class Video(models.Model):
    link = models.URLField()

    def __str__(self):
        return self.link                            

Код в представлении:

def index(request):
    full_list = Video.objects.all()
    return render_to_response('index.html', {'full_list': full_list})

Код в шаблоне:

<h1>YouTube list</h1>
{% if full_list %}
    <ul>
    {% for video in full_list %}
        <li>
<!-- link passed to embed code, this shows up as blank -->
<iframe width="560" height="345" src="{{ video.link }}?rel=0" frameborder="0" allowfullscreen></iframe>

<!-- YouTube embed link copy/pasted as is -->
<iframe width="560" height="345" src="http://www.youtube.com/embed/vLmNvYTTWXM?rel=0" frameborder="0" allowfullscreen></iframe>
        </li>
    {% endfor %}
    </ul>
{% else %}
    <p>No videos available</p>
{% endif %}

Снимок экрана браузера: https://img.skitch.com/20110910-t78bm288mxh6nmyjmcbxyjr37n.png

Я предполагаю, что шаблоны отображаютсяпервый, и переменная добавляется второй, следовательно, сервер YouTube даже не вызывается.Это правильное предположение, и если да, то как мне исправить это?

Ответы [ 3 ]

2 голосов
/ 16 апреля 2013

Я написал тег шаблона, который делает именно то, что нужно выше.

https://gist.github.com/chhantyal/5396911

2 голосов
/ 10 сентября 2011

Ваш код правильный, как я вижу.Мб вы покажете нам html код?Единственное, что может быть не так, это отсутствие метода __unicode__ в вашей модели.Вы должны использовать не __str__, а __unicode__.

0 голосов
/ 01 января 2019

Вы можете использовать эту библиотеку, чтобы сделать вашу жизнь проще:

https://github.com/jazzband/django-embed-video

Вставить видео самым простым способом:

models.py

from django.db import models
from embed_video.fields import EmbedVideoField

class Item(models.Model):
    video = EmbedVideoField()  # same like models.URLField()

шаблон

{% load embed_video_tags %}

The video tag:
{% video item.video as my_video %}
  URL: {{ my_video.url }}
  Thumbnail: {{ my_video.thumbnail }}
  Backend: {{ my_video.backend }}

  {% video my_video "large" %}
{% endvideo %}

Or embed shortcut:
{% video my_video '800x600' %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...