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

Django中如何向同一HTML页面传递多个变量?部分变量失效

解决Django同一模板传递多变量的问题

问题根源

  1. URL路由冲突:你配置了两个相同路径dashboard/的路由,Django会从上到下匹配第一个命中的路由,导致dtasks_24视图从未被执行,变量自然传不到模板。
  2. 错误的视图拆分逻辑:给同一模板传多变量不需要写多个视图,正确做法是把所有数据处理逻辑合并到一个视图中,一次性传递所有变量。

修复步骤

1. 合并视图逻辑

把dtasks_24的代码整合到dashboard视图里,统一处理所有需要的数据:

from datetime import datetime, timedelta
from django.contrib.auth.decorators import login_required
from .models import Task

@login_required
def dashboard(request):
    # 保留你原有dashboard视图的逻辑和变量
    # --------------------------
    # 新增dtasks_24的计算逻辑
    today = datetime.now().date()
    tomorrow = today + timedelta(days=1)
    # 注:如果要显示当前登录用户的任务,把"@pjj"改成request.user.username更合理
    tasks_due_tomorrow = Task.objects.filter(
        assigned_members__username="@pjj",
        due_date__in=[today, tomorrow]
    )
    dtasks_24 = tasks_due_tomorrow.count()
    # --------------------------
    # 把所有变量打包进同一个上下文字典传给模板
    return render(request, 'dashboard.html', {
        # 这里放你原来dashboard视图的变量,比如:'dashboard_stats': dashboard_stats,
        'dtasks_24': dtasks_24
    })

2. 修正URL配置

删除重复的路由,只保留一个dashboard/路径:

# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('dashboard/', views.dashboard, name='dashboard'),
    # 移除这条重复路由:path('dashboard/', views.dtasks_24, name='dtasks_24'),
]

3. 模板调用

现在在dashboard.html里可以正常使用{{ dtasks_24 }},和原来的dashboard变量共存。

额外优化提示

如果要显示当前登录用户的待办任务,直接用request.user过滤更高效,避免字符串转换:

tasks_due_tomorrow = Task.objects.filter(
    assigned_members=request.user,
    due_date__in=[today, tomorrow]
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 07:40:04