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

时间:2012-01-26 19:37:14

标签: django django-models django-forms django-templates django-views

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

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

我很感激您可以分享的任何帮助

2 个答案:

答案 0 :(得分:10)

一种方法是将对象放入第一个视图中的会话中,然后可以从第二个视图中的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})

答案 1 :(得分: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