2011-09-10 28 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

テンプレートが最初にレンダリングされ、変数が2番目に追加されているため、YouTubeのサーバーが呼び出されていないと推測しています。これは正しい仮定ですか、もしそうなら、どうやって修正するのでしょうか?

答えて

2

あなたのコードは、わかりましたが正しいです。 あなたは私たちに結果のHTMLコードを表示されますか? あなたのモデルでは__unicode__メソッドが欠けている可能性があります。 __str__ではなく、__unicode__を使用してください。

+0

今私は気が気になりません。最後に、HTMLコードの問題を理解しました。 YouTube iFrameの埋め込みによってURIが変更されます。これはYouTubeのURLとは異なります。古い埋め込みコードは同じことを行います。私はYouTubeのビデオIDを正規表現するコードを書いて、それを埋め込みコードに入れてもうまくいきます。もう一度あなたの助けをありがとう! –

+1

@ Jerryあなたは同じことをして同じ問題に直面するために必要なコードを貼り付けてください。 –

関連する問題