Django将对象从视图传递到下一个进行处理

Posted

技术标签:

【中文标题】Django将对象从视图传递到下一个进行处理【英文标题】:Django pass object from view to next for processing 【发布时间】:2012-02-19 21:40:24 【问题描述】:

如果您有 2 个视图,第一个使用 modelform 获取用户输入的信息(出生日期、姓名、电话号码等),第二个使用此信息创建表格。

如何将第一个视图中创建的对象传递给下一个视图,以便在第二个视图的模板中使用它

如果您能分享任何帮助,我将不胜感激

【问题讨论】:

【参考方案1】:

一种方法是在您的第一个视图中将对象放入会话中,然后您可以从第二个视图中的 request.session 中检索该对象。

def first_view(request):
    my_thing = 'foo' : 'bar'
    request.session['my_thing'] = my_thing
    return render(request, 'some_template.html')

def second_view(request):
    my_thing = request.session.get('my_thing', None)
    return render(request, 'some_other_template.html', 'my_thing' : my_thing)

【讨论】:

你能澄清一下你的意思吗?也许是相关 Django 文档的链接?我还在学习这些东西谢谢你的回复! 我为您的回答添加了一个示例。 这看起来可能对我有用!最后一个问题,(我很抱歉)..我如何从模板中调用保存的表单?我应该用它们在第一个视图的模板中的名称来称呼它们吗?再次感谢! ps,你的例子中的 my_object = form.save() 在我的问题中......因为我正在保存输入的东西...... 什么是我要传递的变量不是JSON可序列化的,例如和实例?【参考方案2】:

使用HttpResponseRedirect 指向带有新创建对象ID 的表视图。这是一个简短的例子:

def first(request):
    if request.method == 'POST':
          form = MyModelForm(request.POST, request.FILES)
          if form.is_valid():
               my_model = form.save()

               return HttpResponseRedirect('/second/%s/' % (my_model.pk)) # should actually use reverse here.
      # normal get stuff here

def second(request, my_model_pk):
     my_model = MyModel.objects.get(pk=my_model_pk)

     # return your template w/my model in the context and render

【讨论】:

那么你会如何调用这个对象呢?你介意提供一个简短的例子吗?谢谢!

以上是关于Django将对象从视图传递到下一个进行处理的主要内容,如果未能解决你的问题,请参考以下文章

将对象从模板传递给 django 视图(控制器)

如何从模型 A 的 CreateView 重定向到模型 B 的另一个 CreateView,同时将关键信息从模型 A 传递到下一个视图?

如何在 Swift 中通过 Segue 将数据传递到下一个视图?

Django将Python对象从视图传递到模板中的Javascript脚本

将数据从文本字段传递到下一个视图

如何将从列表中选择的多个项目传递到下一个视图?