如何使用ListView

时间:2019-06-13 18:38:31

标签: python html django

因此,基本上我正在尝试构建一个看起来像Netflix的登陆页面。我想代表基于Movie模型的Movie对象。因此这些对象将出现在ListView页面中。 我真的不明白如何使用模板编码进行注入以及如何使其以块的形式出现。

我的目标是这样的:

enter image description here

我的models.py:

class Movie(models.Model):
    '''

    '''
    name = models.CharField(max_length = 250,unique = True)
    director = models.CharField(max_length = 250)
    image = models.ImageField(upload_to='movies_pictures', blank =True)
    length = models.IntegerField()
    price = models.IntegerField()
    copies = models.IntegerField()
    trailer = models.URLField()

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        ''' this will reverse you back to movie detail page '''
        return reverse("movie_detail",kwargs={"pk":self.pk})

    class Meta:
        ordering = ['name']

我想了解如何使用django模板注入来构建html页面。

谢谢你!

1 个答案:

答案 0 :(得分:0)

渲染时将电影查询集传递给模板。

def movies(request):
    all_movies = Movies.objects.all() #or .filter(name__icontains="alien")
    context = {"movies": all_movies}
    return render(request, "movies/movie_list.html", context) # assumes you have created the template

然后,您可以使用Django模板引擎遍历电影,并创建html / css,使您的电影看起来像您想要的

{% for movie in movies %}
    <div>{{ movie.name}}</div>
    <div>{{ movie.director}}</div>
    ...
{% endfor %}

掌握了基于函数的视图并将数据传递到模板后,请查看class based views