Skip to main content
 首页 » 编程设计

python之尝试使用 django-embed-video 将 youtube 视频列表显示到 django 模板中

2024年08月16日31mfryf

我正在尝试使用 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 %}