首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在django模板中显示与带注释的queryset链接的views.py变量?

如何在django模板中显示与带注释的queryset链接的views.py变量?
EN

Stack Overflow用户
提问于 2018-05-24 22:11:49
回答 1查看 305关注 0票数 1

如何在django模板中显示与带注释的queryset链接的views.py变量?我知道带注释的queryset在打印出来时返回正确的数据,但是不知怎么的,模板for循环并没有检索html页面上的数据。有人能告诉我如何解决这个问题吗?谢谢。

VIEWS.PY

代码语言:javascript
复制
from django.shortcuts import render
from django.views.generic import (TemplateView,ListView,
                              DetailView,CreateView,
                              UpdateView,DeleteView)
from django.urls import reverse_lazy
from myapp.models import Pastry
from myapp.forms import PastryForm
from django.db.models import F

这一行ps = Pastry.objects.values('pastry').annotate(total=Count('pastry'))返回正确的数据:

代码语言:javascript
复制
{'pastry': 'Brownie', 'total': 1}
{'pastry': 'Cake', 'total': 1}
{'pastry': 'Cupcake', 'total': 1}
{'pastry': 'Fruit Tart', 'total': 1}
{'pastry': 'Muffin', 'total': 2}


class PollsListView(ListView):
    model = Pastry

    def get_queryset(self):
        return Pastry.objects.all()

class PollsDetailView(DetailView):
    model = Pastry

class PollsCreateView(CreateView):
    success_url = reverse_lazy('pastry_list')
    form_class = PastryForm
    model = Pastry

class PollsUpdateView(UpdateView):
    success_url = reverse_lazy('pastry_list')
    form_class = PastryForm
    model = Pastry

class PollsDeleteView(DeleteView):
    model = Pastry
    success_url = reverse_lazy('pastry_list')

pastry_list.html (模板)

代码语言:javascript
复制
{% extends "base.html" %}
{% block content %}
<div class="jumbotron">

<a href="{% url 'pastry_new' %}">New Poll</a>
<h1>Voting for the favorite pastry</h1>

Somehow this code here is not displaying any data.
{% for p in ps %}
 {% for k, v in p.items %}
   {{k}}{{v}}
 {% endfor %}
{% endfor %}

{% for pastry in pastry_list %}
    <div class="pastry">
        <h3><a href="{% url 'pastry_detail' pk=pastry.pk %}">
  {{ pastry.pastry }}</a></h3>
    </div>
  {% endfor %}

 </div>

 {% endblock %}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-24 23:06:45

更多信息可以在文档中找到。

基本上,您可以通过get_context_data()方法向模板发送更多变量。

示例:

代码语言:javascript
复制
class PollsListView(ListView):
    model = Pastry

    def get_queryset(self):
        return Pastry.objects.all()

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['ps'] =  = Pastry.objects.values('pastry').annotate(total=Count('pastry'))
        return context

使用get_context-data(),您的变量ps在模板pastry_list.html中可用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50518889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档