首页 > 解决方案 > 如何使用 ListView 构建此登录页面

问题描述

所以基本上我正在尝试建立一个看起来像 Netflix 的登录页面。我想代表基于电影模型的电影对象。所以这些对象将出现在 ListView 页面中。我真的不明白如何使用模板编码进行注入以及如何使其显示为块。

我的目标是这样的:

在此处输入图像描述

我的模型.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 页面。

谢谢你!

标签: pythonhtmldjango

解决方案


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

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 %}

一旦你掌握了基于函数的视图并将数据传递给模板,看看基于类的视图


推荐阅读