我正在尝试使用 django-embed-video 将一个 youtube 视频列表嵌入到我的 django 应用程序中,随着时间的推移会添加更多视频。根据他们的文档,我做了以下事情:
模型.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
管理员.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)
View .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 标签非常不确定。呈现 videos.html 时,浏览器仅将 youtube 链接显示为字符串。我怎样才能显示视频?
请您参考如下方法:
感谢 raratiru 的快速回答!它让我想到研究 django-embed-video 应用程序本身的代码。我摆弄了一下,现在它按照我想要的方式工作。相关代码为:
视频.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 %}
