我使用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__.py
和replace.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
后,必须重新启动服务器