Django函数视图如何传递Group模型数据至模板?
解决方案
不需要改成类视图,函数视图里直接就能把Group实例传递给模板,具体操作如下:
1. 获取Group实例
通过主键(或其他查询条件)获取目标Group对象,推荐用get_object_or_404处理找不到实例的情况:
from django.shortcuts import get_object_or_404 from .models import Group def send_notifications(request, group_id): group = get_object_or_404(Group, pk=group_id) # 后续执行发送邮件逻辑
2. 将实例传入模板上下文
调用render函数时,把Group实例加入第三个参数(上下文字典),模板就能访问模型数据了:
from django.shortcuts import render from django.core.mail import send_mail def send_notifications(request, group_id): group = get_object_or_404(Group, pk=group_id) # 执行发送邮件的逻辑 send_mail( subject=f"【{group.name}】成员通知", message=f"各位{group.name}的成员,请注意查看最新通知内容...", from_email="admin@example.com", recipient_list=[member.email for member in group.members.all()], fail_silently=False, ) # 把group实例传递给模板 return render(request, "notifications/success.html", {"group": group})
3. 模板中使用模型数据
在模板里直接通过变量访问Group的字段即可:
<div class="notification-success"> <h2>通知发送成功!</h2> <p>已向 {{ group.name }} 的 {{ group.members.count }} 位成员发送邮件</p> </div>
如果你的视图不需要渲染模板,只是发送邮件后跳转,也可以通过URL参数传递必要信息,但如果需要展示Group相关的内容,上述传递上下文的方法是最直接的。
内容的提问来源于stack exchange,提问作者Yehuda
相关产品推荐
相关产品推荐

