You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django 4.0的ListView类视图中传递变量

解决Django ListView传递员工总数到模板的问题

Django类视图中,直接定义的类属性不会自动传入模板上下文,需要通过重写get_context_data方法来添加自定义变量。以下是修正后的代码:

修改Views.py

from django.views.generic import ListView
from django.db.models import Count
from .models import Funcionarios

class ListaFuncionariosView(ListView):
    model = Funcionarios
    template_name = '../templates/funcionarios/lista_funcionarios.html'
    paginate_by = 10
    ordering = ['FuncionarioCartao']
    queryset = Funcionarios.objects.filter(EmpresaCodigo=1)

    def get_context_data(self, **kwargs):
        # 获取父类生成的默认上下文
        context = super().get_context_data(**kwargs)
        # 基于已过滤的queryset统计员工总数,避免重复查询
        context['funcionarios_number'] = self.queryset.aggregate(total=Count('FuncionarioCartao'))['total']
        return context

模板说明

你的HTML代码无需大幅修改,现在{{ funcionarios_number }}会直接显示过滤后的员工总数(整数格式):

<h1>Good Morning</h1>
Exists: {{ funcionarios_number }}
<br>
{{ funcionarios }}

关键说明

  • 直接在类中定义的funcionarios_number不会被自动加入模板上下文,必须通过get_context_data方法注入。
  • 使用self.queryset进行统计,复用已过滤的查询集,减少数据库查询次数,提升性能。

内容的提问来源于stack exchange,提问作者Gustavo Cavasotto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:45:29