【问题标题】:Django queryset for list item列表项的 Django 查询集
【发布时间】:2017-11-28 19:24:59
【问题描述】:

我对 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.description,@ 987654326@ 和info.director 属于他们决定点击的电影。我知道如何编写模板以及所有这些,但我感到困惑的是如何使用 {{info.???}} 编写模板,而不必为要链接的每部电影创建模板,而是使用以前的用户在其中选择电影以在下一个模板中创建详细信息的模板。

【问题讨论】:

    标签: python django database django-models django-queryset


    【解决方案1】:

    您应该创建一个新视图,它会获取所选电影的 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>
    

    您应该做的最后一件事是将正确的 url 放入带有电影列表的 html 中

    # Your initial html
    <body>
        {% for movie in movies %}
            <a href="{% url 'movie_detail' movie.pk %}">{{ movie.title }}</a>
        {% endfor %}
    </body>
    

    仅此而已

    【讨论】:

      【解决方案2】:

      在你的模型中添加一个独特的字段,比如 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&lt;university_id&gt;[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>
      

      【讨论】:

        猜你喜欢
        • 2020-02-26
        • 1970-01-01
        • 1970-01-01
        • 2012-10-29
        • 2020-12-24
        • 2021-05-06
        • 2020-05-23
        • 2021-04-06
        • 2020-09-14
        相关资源
        最近更新 更多