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将对象从视图传递到下一个进行处理的主要内容,如果未能解决你的问题,请参考以下文章
如何从模型 A 的 CreateView 重定向到模型 B 的另一个 CreateView,同时将关键信息从模型 A 传递到下一个视图?
如何在 Swift 中通过 Segue 将数据传递到下一个视图?