Как получить часть URL и преобразовать в строку django python? - PullRequest
0 голосов
/ 25 мая 2020

У меня есть простой сайт блога в django, и я хочу включить встраивание видео с помощью этого скрипта:

<script src= "http://player.twitch.tv/js/embed/v1.js"></script>
<div id="youtubeplayer"></div>
<script type="text/javascript">
  var options = {
    width: 800,
    height: 500,
    video: "627627612"
  };
  var player = new Twitch.Player("youtubeplayer", options);
  player.setVolume(0.5);
</script>

У меня есть поле URL-адреса в модели Post. Затем я хочу взять этот URL-адрес и использовать только его часть для заполнения параметра «видео» в приведенном выше сценарии. Так, например, у нас есть URL-адрес видео Twitch https://www.twitch.tv/videos/494181151, и я хочу взять 494181151 и преобразовать его в строку, чтобы я мог заполнить его параметром «видео» выше в шаблоне html.

Возможно ли это, и как я go могу это сделать? Я знаю, что должен проверить URL-адрес, а затем проверить, содержит ли он часть URL-адреса, например:

{% if url %}
{% if 'twitch.tv/videos' in url %}

Но я не уверен, как получить последнюю часть URL-адреса.

Спасибо!

РЕДАКТИРОВАТЬ: Благодаря Налину я смог создать метод в модели Post для правильного извлечения идентификатора видео. Однако, когда я использую переменную в шаблоне html, все, что я вижу, - это какая-то Javascript печать на веб-странице. var options = { width: 800, height: 500, ...

Вот мой обновленный шаблон html:

 {% if post.video_URL %}
    <script src= "http://player.twitch.tv/js/embed/v1.js"></script>
    <div id='youtubeplayer'></div>
    <script type="text/javascript">
       var options = {
           width: 800,
           height: 500,
           video: "{{ post.get_video_id }}"
       };
       var player = new Twitch.Player("youtubeplayer", options);
       player.setVolume(0.5);
      </script> 
{% endif %}

Вот метод модели, если необходимо, но, похоже, он работает правильно, если я просто напечатаю {{ post.get_video_id }}. Проблема возникает только тогда, когда я пытаюсь включить его в javascript выше, чтобы встроить видео Twitch.

class Post(models.Model):
    user = models.ForeignKey(User, on_delete= models.CASCADE)
    title = models.CharField(max_length=100, blank=False)
    content_text = models.TextField(blank=False, max_length=3000)
    created_date = models.DateTimeField(auto_now_add=True)
    score = models.IntegerField(blank=True, null=True)
    slug = AutoSlugField(populate_from='title',
                         unique_with=['user__username', 'created_date'])
    tags = TaggableManager()
    video_URL = models.URLField(blank=True, verbose_name='Video/VOD/Clip URL')

    def __str__(self):
        return self.title

    def get_video_id(self):
        video_id = self.video_URL.split('/')[-1]  # will return str
        return video_id

enter image description here

Спасибо !!

1 Ответ

1 голос
/ 25 мая 2020

Вы можете просто разделить URL-адрес, чтобы получить идентификатор видео.

video_url = 'https://www.twitch.tv/videos/494181151'
video_id = video_url.split('/')[-1]  # will return str

Затем вы можете вернуть video_id в своем контексте. Затем в своем шаблоне вы можете сделать что-то вроде:

<script type="text/javascript">
{% if video_id %}
  var options = {
    width: 800,
    height: 500,
    video: "{{ video_id }}"
  };
  var player = new Twitch.Player("youtubeplayer", options);
  player.setVolume(0.5);
{% endif %}
</script>

Возможно, вам придется добавить дополнительные проверки при разделении строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...