如何提取使用Django Embed视频上传的视频的URL



我使用Django Embed Video将视频上传到我的网站,效果非常好。下面的代码是我如何提取我上传的视频的url。

HTML模板:

{% for course in courses %}
<div class="name">
<h3>{{course.video}}</h3>
</div>
{% endfor %}

这给了我url,但我想要的是视频id,例如它给出的url看起来像";https://youtu.be/iHkKTGYc6aA"我只需要";iHkKTGYc6aA";。这可以使用.replacement方法在python中完成,但每当我尝试使用django-html模板的if标记时,我都会收到以下错误:

Could not parse the remainder: 

我使用的HTML代码

{% for course in courses %}
<div class="name">
{% if text in course.video %}
<h3>{{url=course.video.replace("https://youtu.be/", "")}} </h3>
{% endif %}
</div>
{% endfor %}

我知道这不是正确的做法,但我分享它只是为了展示我想要实现的目标。

我的观点.py:

def Courses(request):
courses = Video.objects.all()
total_uploaded_videos = courses.count()
text = "https://youtu.be/"
url = ""

context = {'courses':courses, 'total_uploaded_videos':total_uploaded_videos, 'text':text, 'url':url}
return render(request, 'accounts/Course.html', context)

Models.py:

class Video(models.Model):
name = models.CharField(blank=False, max_length=100, default="", null=False, primary_key=True)
video = EmbedVideoField()  
def __str__(self):
return self.name

如果你有其他方法可以提取视频id或视频url(在views.py或models.py中),我会使用它而不是html标签。

CCD_ 1,不能使用参数调用方法。您需要编写一个自定义筛选器。

官方指南在这里:

https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

您想要编写一个过滤器replace,它可以删除任何给定的字符串。

在Project_name/App_name/templatetag中,创建一个空白__init__.pyreplace.py,如下所示:

from django import template
register = template.Library()
@register.filter
def replace(value, arg):
return value.replace(arg, "")

在模板中,使用:

{% load replace %} <!-- load templatetag -->
{% for course in courses %}
<div class="name">
{% if text in course.video %}
<h3>{{ course.video|replace:"https://youtu.be/" }}</h3> <!-- value|templatetag:arg -->
{% endif %}
</div>
{% endfor %}

注意:添加新的templatetag后,必须重新启动服务器

最新更新