我正在尝试在我的网站上显示MP4,并且正在将其放置在上下文中,但是由于某种原因,当我访问页面时,我得到了此信息:'type object'tivey'没有属性" video_file"
尝试了一些事情,但它们都没有用。
views.py
def movie(request, movie_id):
movie = get_object_or_404(Video, title=movie_id) # This only gets the movie name
mp4 = Video.video_file.url
context = {'video': movie, 'mp4':mp4}
return render(request, template_name=f'uploadvideos/movie.html', context=context)
models.py
class Video(models.Model):
title = models.CharField(max_length=40, blank=False)
video_file = models.FileField(name="Upload a mp4 file",
upload_to=f"uploadvideos/video",
validators=[FileExtensionValidator(['mp4'])],
blank=False)
def __str__(self):
return self.title
Movie.html
<h1 class="movietitle">{{ video }}</h1>
<div class="videoDetails">
<video width="700" height="430" controls>
<source src="{{ mp4 }}" type="video/mp4">
</video>
</div>
我希望显示视频,但是我得到了一个错误:"类型对象"视频'没有属性'video_file'
Video
指的是 Video
class ,因为Video
实例此处命名为movie
,因此您应该使用:
def movie(request, movie_id):
movie = get_object_or_404(Video, title=movie_id)
context = {'video': movie, 'mp4': movie.video_file.url }
return render(request, 'uploadvideos/movie.html', context)
您的假设:
# This only gets the movie name
是错误的。这将加载一个Video
对象。如果您渲染此对象,它将在该对象上调用str(..)
函数,这确实会返回标题,但这确实是不是表示movie
本身是字符串。