我一直试图通过在类中传递视频ID并替换模板中的值来显示youtube视频。但它似乎没有发生。
我的models.py
来自django.db导入模型
class Rockinfo(models.Model):
rock_name = models.CharField(max_length=200,default="ac/dc")
rock_img = models.ImageField(upload_to="%Y/%m/%d",default="1992/08/92")
rank = models.IntegerField(default=0)
def __str__(self):
return self.rock_name
class Rockvids(models.Model):
rockername = models.ForeignKey(Rockinfo)
vid_id = models.CharField(max_length=200,default="Z7JgY9zezj4")
vid_name = models.CharField(max_length=300,default="Something Inside Me")
vid_singer_name = models.CharField(max_length=300,default="Jonathan Reyes Myers")
def __str__(self):
return self.vid_id
我的admin.py
from django.contrib import admin
from .models import Rockinfo, Rockvids
class ChoiceInline(admin.TabularInline):
model = Rockvids
extra = 10
class RockinfoAdmin(admin.ModelAdmin):
fieldsets = [
('The Fucking Band', {'fields': ['rock_name']}),
('Image', {'fields': ['rock_img']}),
]
inlines = [ChoiceInline]
list_display = ('rock_name', 'rock_img')
list_filter = ['rank']
search_fields = ['rock_name']
admin.site.register(Rockinfo, RockinfoAdmin)
我的申请urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'),
]
我的应用程序的views.py
文件
from django.shortcuts import get_object_or_404, render
from django.http import HttpResponseRedirect, HttpResponse
from django.core.urlresolvers import reverse
from django.views import generic
from .models import Rockvids, Rockinfo
class IndexView(generic.ListView):
template_name = 'rockinglist/index.html'
context_object_name = 'latest_rockinfo_list'
def get_queryset(self):
return Rockinfo.objects.order_by('-rank')[:50]
class DetailView(generic.DetailView):
model = Rockinfo
template_name = 'rockinglist/detail.html'
index.html
档案
{% if latest_rockinfo_list %}
<ul>
{% for rockinfo in latest_rockinfo_list %}
<h1>{{ rockinfo.rock_name }}</a></li>
<img src="img\{{ rockinfo.rock_img }}" alt="ac/dc">
{% endfor %}
</ul>
{% else %}
<p>No</p>
{% endif %}
detail.html
档案
<h1>{{ rockinfo.rock_name }}</h1>
{% for choice in rockinfo.rockvids_set.all %}
<img id="hide" src="http://img.youtube.com/vi/{{ rockvids.vid_id }}/hqdefault.jpg" data-video="https://www.youtube.com/embed/{{ rockvids.vid_id }}?autoplay=1" width="480" height="300"/>
{% endfor %}
我一直试图通过使用Rockvids
类中传递的视频ID在用户点击图片后显示所有YouTube视频,但循环中似乎有一些错误。提前致谢。
答案 0 :(得分:1)
在模板循环中,您已将对象定义为choice
。只需参考它而不是使用rockvids
。见下文。
{% for choice in rockinfo.rockvids_set.all %}
<img id="hide" src="http://img.youtube.com/vi/{{ choice.vid_id }}/hqdefault.jpg" data-video="https://www.youtube.com/embed/{{ choice.vid_id }}?autoplay=1" width="480" height="300"/>
{% endfor %}
由于您将拥有多个图片,因此您可能还希望将id="hide"
更改为class="hide"
,因为页面上应该只有一个元素具有给定的id
。< / p>