发送列表以查看

时间:2015-03-22 08:22:33

标签: python json django

我有代码从youtube频道获取视频列表,使用iframe youtube播放器获取模板html。我需要发送视频类数组来查看(ListView)。我怎么能这样做?

util class:

import requests
import simplejson
from blogapp.video import *
video_channel = "***"
url = "https://gdata.youtube.com/feeds/api/videos?author="+video_channel+"&orderby=updated&v=2&alt=jsonc"


def get_Videos():
    request = requests.get(url)
    data_about = simplejson.load(request.text)
    video_list = []
    for item in data_about['data']['items']:
        same = Video(item['title'],item['id'],item['description'],item['player']['default'])
        video_list.append(same)
    return video_list

视频课程:     课堂视频:         title = 0         id = 0         description = 0         url = 0

    def __init__(self,title,id,description,url):
        self.url=url
        self.title=title
        self.id=id
        self.description=description

查看:

from django.views.generic import ListView, DetailView
from blogapp.models import Blog
from blogapp.utils import *
class BlogListView(ListView):
    model = Blog
    context_object_name = 'videos'
    video_array = get_Videos()
    template_name = 'blogapp/video_list.html'

模板:

{% extends 'base.html' %}
{% block title %}Video Posts{% endblock %}
{% block content %}

<h2>Video</h2>

    {% if videos %}

        {% for video in videos %}
            <iframe id="ytplayer" type="text/html" width="720" height="405"
src="https://www.youtube.com/embed/{{ video.id }}}"
frameborder="0" allowfullscreen>

        {% endfor %}

{% else %}
    <p>There are no video </p>
{% endif %}

{% endblock %}

1 个答案:

答案 0 :(得分:1)

对于此任务,您应使用TemplateView代替ListView

from django.views.generic.base import TemplateView

class VideoListView(TemplateView):

    template_name = "blogapp/video_list.html"

    def get_context_data(self, **kwargs):
        context = super(VideoListView, self).get_context_data(**kwargs)
        context['videos'] = get_Videos()
        return context