类型对象'Video'没有属性'video_file' Django



我正在尝试在我的网站上显示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本身是字符串。

最新更新