2013-12-11 2 views
3

Я хочу сохранить поле url видео с youtube, чтобы я мог загрузить его на моем сайте. До сих пор я придумал это в html:django - с помощью регулярного выражения, чтобы удалить и заменить urlfield

<h3>{{video.title}}</h3> 
<object width="425" height="344"><param name="movie" value="{{video.video_url}}"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="{{video.video_url}}" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object> 

Но проблема в том, что он работает только в одном направлении. Например:

URL: http://www.youtube.com/watch?v=e4lHTj9xFqE

Это будет работать только если watch? полосатые и = становится /

Так что окончательный URL будет несколько, как этот

http://www.youtube.com/v/e4lHTj9xFqE 

Я думал о используя регулярное выражение, прежде чем он будет сохранен, и замените его и разделите. Как мне сделать, чтобы разбить watch?, а затем заменить = на /? Также есть ли лучший способ загрузить видео в html? Предложение от вас, ребята, будет оценено по достоинству. Спасибо!

Edit:

models.py:

class Video(models.Model): 
    title = models.CharField(max_length=100) 
    video_url = models.URLField(max_length=100) 

    def save(self, *args, **kwargs): 
     new_url = (self.video_url.replace("watch?v=","v/")) 
     super(Video, self).save(*args, **kwargs) 
     if new_url: 
      self.video_url = new_url 

ответ

4

Почему регулярное выражение:

string = (r'http://www.youtube.com/watch?v=e4lHTj9xFqE'.replace('watch?','')).replace('=','/') 
print string 
#http://www.youtube.com/v/e4lHTj9xFqE 

Но если вам нужно здесь я пойти:

new_url = re.sub('watch\?v=','v/',self.video_url) 

EDIT:

попробовать это:

def save(self, *args, **kwargs): 
    new_url = re.sub('watch\?v=','v/',self.video_url) 
    if new_url: 
     self.video_url = new_url 
     super(Video, self).save(*args, **kwargs) 

и не изменять HTML-

+0

Спасибо за оба ответа! И я это пробовал, но я получаю ошибку. Я добавил мои models.py. Пожалуйста, взгляните на него. – Robin

+0

Регулярный путь тоже не заменяет его. – Robin

+0

@Robin смотреть сейчас .. –

2

Я хотел бы работать с простой replace

video.video_url.replace("watch?v=", "v/") 
+0

Спасибо за ответ! Я попробовал это так, как вы мне сказали, но не заменил его. Является ли проблема с моим методом? Я добавил мои models.py, пожалуйста, взгляните на это. – Robin

+1

Вы вызываете 'save' в начале. Попытайтесь сделать это * после *, вы установите 'self.video_url' в' new_url'. Если вы сохраните новый экземпляр модели в БД, который не означает, что какие-либо изменения этого экземпляра будут сохранены в БД автоматически после этого. – itsjeyd

+0

@itsjeyd Yup, вот и все! Благодаря! – Robin

Смежные вопросы