Как извлечь URL-адрес загруженного видео с помощью Django Embed video
Я использую Django Embed Video для загрузки видео на мой сайт, который работает совершенно нормально. Код ниже показывает, как я извлекаю url видео, которое я загрузил.
HTML TEMPLATE:
{% for course in courses %}
<div class="name">
<h3>{{course.video}}</h3>
</div>
{% endfor %}
Это дает мне url, но мне нужен id видео, например, url выглядит как "https://youtu.be/iHkKTGYc6aA", а мне нужен только "iHkKTGYc6aA". Это можно сделать с помощью python, используя метод .replace, но всякий раз, когда я пытаюсь использовать теги if шаблона django html, я получаю эту ошибку:
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 %}
Я знаю, что это не правильный способ, но я поделился им, чтобы показать, чего я хочу достичь.
Мой views.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-тегов.
course.video.replace("https://youtu.be/", "")
,
Вы не можете вызвать метод с аргументами. Вам необходимо написать собственный фильтр.
Официальное руководство находится здесь:
https://docs.djangoproject.com/en/dev/howto/custom-template-tags/
Вы хотите написать фильтр replace_url
, который удаляет 'https://youtu.be/' в строке.
В Project_name/App_name/templatetags, создайте пустой __init__.py
, и replace_url.py
, который будет выглядеть так:
from django import template
register = template.Library()
@register.filter
def replace_url(value):
return value.replace("https://youtu.be/", "")
В шаблоне используйте:
{% load replace_url %} <!-- load templatetag -->
{% for course in courses %}
<div class="name">
{% if text in course.video %}
<h3>{{ course.video|replace_url }} </h3>
{% endif %}
</div>
{% endfor %}
Примечание: Вы должны перезапустить сервер после добавления нового templatetag
.
Пожалуйста, примите ответ, если он вам подходит. Счастливого кодирования!