您还需要将对象传递到views.py中的模板

时间:2019-06-22 18:39:13

标签: python html django

一个用户告诉我将对象传递给views.py中的模板。

我在Django中创建了一个模型,并希望在html代码中显示使用该模型创建的对象的标题。 我的模型代码是:

class Video(models.Model):
    title = models.CharField(max_length=40, blank=False)

    def __str__(self):
        return self.title

我的html代码是:

<html>
<body>
    <header>
        <div class="container">
            <!-- Branding -->
            <a href="/"><span class="branding">Movies & Other</span></a>
            <a href="/admin"><span class="adminpanel">Admin panel</span></a>
        </div>
    </header>

    <h1 class="movietitle">{{ video.title }}</h1>
    <div class="videoDetails">
        <video width="700" height="430" controls>
            <source src="uploadvideos/videos/yt/yt.mp4" type="video/mp4">
        </video>
    </div>
</body>
</html>

我在管理面板的视频模型中创建了一个对象,但没有显示其标题。

这是我的观点。py

def index(request):
    movie_list = Video.objects.order_by('id')
    context = {'video_list': movie_list}
    return render(request, template_name='uploadvideos/index.html', context=context)


def movie(request, movie_id):
    movie = get_object_or_404(Video, title=movie_id)
    context = {'movie': movie}
    # return HttpResponse(f"You're viewing {movie.title}")
    return render(request, template_name=f'uploadvideos/{movie.title}/movie.html', context=context)

2 个答案:

答案 0 :(得分:0)

如果 str ()返回self.title,则您应仅在模板中使用{{video}} 您还需要将对象传递到views.py

中的模板

答案 1 :(得分:0)

您要传递一个名为movie的对象,因此应在模板{{ movie.title }}中使用它。

但是我不太明白你在这里做什么。您的模板路径意味着每个视频都有单独的模板,这确实很奇怪。您似乎已经错过了模板的要点。模板应该是通用的,所有数据都应来自上下文。如果每个视频都有单独的模板,则最好对所有内容进行硬编码。