尝试使用django嵌入视频将youtube视频列表显示到django模板中



我正在尝试使用django-embed-video将YouTube视频列表嵌入到我的django应用程序中,其中将随着时间的推移添加更多视频。在他们的文档之后,我做了以下工作:

models.py

from embed_video.fields import EmbedVideoField
class Youtube(models.Model):
video = EmbedVideoField()
slug = models.SlugField(max_length=200, db_index=True, unique=True)
def __str__(self):
return self.video

admin.py

from .models import Youtube
from embed_video.admin import AdminVideoMixin
class YoutubeAdmin(AdminVideoMixin, admin.ModelAdmin):
list_display = ('video', 'slug')
admin.site.register(Youtube, YoutubeAdmin)

views.py

from .models import Youtube
def display_video(request):
videos = Youtube.objects.all()
context = {'videos': videos}
return render (request, 'scienceblog/post/videos.html', context)

视频.html

{% extends "base.html" %}
{% load embed_video_tags %}
{% video item.video 'small' %}
{% block content %}
{% if videos %}
{% for v in videos %}
{{ v }}
{% endfor %}
{% else %}
<p>No videos yet</p>
{% endif %}
{% endblock %}

在管理站点中一切都很完美。添加了YouTube链接并显示视频。但是,我对HTML标签非常不确定。浏览器仅在呈现视频.html时将 youtube 链接显示为字符串。如何显示视频?

感谢您的快速回答拉拉蒂鲁!它让我想到了研究django嵌入式视频应用程序本身的代码。我摆弄了一下,现在它的工作方式正是我希望它工作的方式。相关代码为:

视频.html

{% load embed_video_tags %}
{% for v in videos %}
{% video v.video as my %}
<iframe width="{{ 480 }}" height="{{ 320 }}" src="{{ my.url }}" 
frameborder="0" allowfullscreen></iframe>
{% endvideo %}
{% endfor %}

您需要获取根据models.pyvideoEmbedVideoField()。因此,循环应如下所示:

{% extends "base.html" %}
{% load embed_video_tags %}
{% video item.video 'small' %}
{% block content %}
{% if videos %}
{% for v in videos %}
{{ v.video }}
{% endfor %}
{% else %}
<p>No videos yet</p>
{% endif %}
{% endblock %}

EmbedVideoField()可能有更多必须访问的属性,您必须检查相关文档。例如,如果嵌入代码存储在EmbedVideoField().embed_code您可以按如下方式访问它:

{% for v in videos %}
{{ v.video.embed_code }}
{% endfor %}

最新更新