繁体   English   中英

列表项的Django queryset

[英]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.imageinfo.descriptioninfo.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM