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

Django函数式视图中如何获取前序视图传递给模板的context数据

Django跨视图上下文数据获取方案

实现方案

  • GET参数传递(适合非敏感、短小数据)

    这是最轻量的实现方式,直接将需要传递的参数拼接在跳转URL后即可:
    1. 修改some_template.html中的跳转链接,携带name参数:
    <div>
       {{name}}
       <a href="{% url 'second_view' %}?name={{ name }}">Redirect</a>
    </div>
    
    1. 在method_B中从GET请求提取参数:
    def method_B(request):
        # 第二个参数为默认值,防止参数缺失报错
        name = request.GET.get('name', '默认值')
        context = {"second":"second", "name": name}
        html_template = loader.get_template('template_B.html')
        return HttpResponse(html_template.render(context, request))
    
  • Session存储(适合敏感、体积稍大的数据,或需要跨多请求复用的场景)

    利用Django自带的session机制将数据存在服务端,避免参数暴露在URL中:
    1. 修改method_A,将数据存入session:
    def method_A(request):
        context = {"name":"sample"}
        request.session['name'] = "sample"
        html_template = loader.get_template('some_template.html')
        return HttpResponse(html_template.render(context, request))
    
    1. 在method_B中从session读取数据,不需要时可主动删除释放空间:
    def method_B(request):
        name = request.session.get('name', '默认值')
        # 后续无需使用该数据时可主动删除
        # del request.session['name']
        context = {"second":"second", "name": name}
        html_template = loader.get_template('template_B.html')
        return HttpResponse(html_template.render(context, request))
    
  • 自定义上下文处理器(适合全站点/多个视图通用的公共数据)

    如果name这类数据是多个模板都需要用到的公共数据,可以写自定义上下文处理器直接注入所有模板的上下文,无需每个视图单独传递。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:06:03