2011-09-10 36 views
2

我試圖在模型中存儲YouTube鏈接列表,然後將其作爲列表傳遞給使用YouTube嵌入代碼呈現的模板。一切似乎工作正常,變量正確傳遞,除非視頻不顯示。 YouTube的iframe代碼只是空白,而複製/粘貼的YouTube嵌入代碼顯示得很好。使用Django在模板中顯示YouTube視頻

在型號代碼:

from django.db import models 

class Video(models.Model): 
    link = models.URLField() 

    def __str__(self): 
     return self.link        

在查看代碼:

def index(request): 
    full_list = Video.objects.all() 
    return render_to_response('index.html', {'full_list': full_list}) 

在模板中的代碼:

<h1>YouTube list</h1> 
{% if full_list %} 
    <ul> 
    {% for video in full_list %} 
     <li> 
<!-- link passed to embed code, this shows up as blank --> 
<iframe width="560" height="345" src="{{ video.link }}?rel=0" frameborder="0" allowfullscreen></iframe> 

<!-- YouTube embed link copy/pasted as is --> 
<iframe width="560" height="345" src="http://www.youtube.com/embed/vLmNvYTTWXM?rel=0" frameborder="0" allowfullscreen></iframe> 
     </li> 
    {% endfor %} 
    </ul> 
{% else %} 
    <p>No videos available</p> 
{% endif %} 

屏幕瀏覽器的鏡頭:https://img.skitch.com/20110910-t78bm288mxh6nmyjmcbxyjr37n.png

我猜測模板首先被渲染,變量被添加第二,因此YouTube的服務器甚至沒有被調用。這是一個正確的假設,如果是的話,我該如何解決它?

回答

2

您的代碼是正確的,因爲我可以看到。 MB你會告訴我們結果html代碼? 唯一可能出錯的地方就是模型中缺少__unicode__方法。 您應該使用不是__str__而是__unicode__

+0

現在我覺得啞巴了。最後找出了HTML代碼中的問題。 YouTube iFrame嵌入更改了URI,它與YouTube網址不同。舊的嵌入代碼做同樣的事情。我編寫了代碼來將YouTube視頻ID正則表達並將其嵌入到嵌入代碼中,並且工作正常。再次感謝您的幫助! –

+1

@傑裏你可以請粘貼代碼你做了什麼我需要做同樣的事情,並面臨同樣的問題 –