[英]Django queryset for list item
我对django还是很陌生,遇到一个问题,即使使用google,我也很难弄清楚,或者我看不到解决方案。 因此,我有一个名为movieTitles的模型,如下所示:
class movieTitle(models.Model):
title = models.Charfield(max_length=50)
image = models.URLField(max_length=100)
description = models.TextField()
year = models.PositiveSmallIntegerField()
director = models.Charfield(max_length=50)
那么我有这样的看法:
from Movie.models import movieTitles
def movieListView(request):
movie = movieTitle.objects.all()
return render(request, 'index.html', {'movies':movie})
和我的html一样:
<body>
{% for info in movies %}
<a href="#">{{info.title}}</a>
{% endfor %}
</body>
我要它要做的是,一旦用户转到电影列表并且他们决定单击某个电影,我如何将用户带到另一个HTML页面,该页面将显示info.image
, info.description
, info.year
,和他们决定点击的电影info.director
。 我知道如何编写模板以及所有这些,但令我感到困惑的是如何使用{{info。???}}编写模板,而不必为每个要链接的电影创建一个模板,而是使用上一个用户选择影片以在下一个模板中创建细节的模板。
您应该创建一个新视图,该视图将获取所选电影的pk并检索有关该电影的所有信息。
# Add to urls.py
urlpatterns += [url(r'^detail/(?P<pk>\d+)/$', views.movie_detail, name='movie_detail')]
# Add to views.py
from django.shortcuts import get_object_or_404
def movie_detail(request, pk):
movie = get_object_or_404(movieTitle, pk=pk)
return render(request, 'movie_detail.html', {'movie': movie})
# movie_detail.html
<h1>Title: {{ movie.title }}</h1>
<img src="{{ movie.image }}">
{{ movie.description|linebreaks }}
<p>Year: {{ movie.year }}</p>
<p>Director: {{ movie.director }}</p>
您应该做的最后一件事是在带有电影列表的html中添加正确的url
# Your initial html
<body>
{% for movie in movies %}
<a href="{% url 'movie_detail' movie.pk %}">{{ movie.title }}</a>
{% endfor %}
</body>
就这样
在您的模型中添加唯一字段,例如id foreg:-
class movieTitle(models.Model):
id = models.Charfield(max_length=50)
title = models.Charfield(max_length=50)
image = models.URLField(max_length=100)
description = models.TextField()
year = models.PositiveSmallIntegerField()
director = models.Charfield(max_length=50)
并输入如下网址:假设应用名称为:
app_name = 'movie'
url(r'^movie-list/show/(?P<university_id>[0-9]+)/$', view.view_list, name='view-list')
,
并在模板中传递您的网址,如下所示:
<body>
{% for info in movies %}
<a href="{{movie:view-list}} info.id">{{info.title}}</a>
{% endfor %}
</body>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.