python - 如何使用 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 页面。
谢谢你!
解决方案
渲染时将电影查询集传递给您的模板。
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 %}
一旦你掌握了基于函数的视图并将数据传递给模板,看看基于类的视图