【发布时间】:2012-02-19 21:40:24
【问题描述】:
如果您有 2 个视图,第一个使用 modelform 获取用户输入的信息(出生日期、姓名、电话号码等),第二个使用此信息创建表格。
如何将第一个视图中创建的对象传递给下一个视图,以便在第二个视图的模板中使用它
如果您能分享任何帮助,我将不胜感激
【问题讨论】:
标签: django django-models django-forms django-templates django-views
如果您有 2 个视图,第一个使用 modelform 获取用户输入的信息(出生日期、姓名、电话号码等),第二个使用此信息创建表格。
如何将第一个视图中创建的对象传递给下一个视图,以便在第二个视图的模板中使用它
如果您能分享任何帮助,我将不胜感激
【问题讨论】:
标签: django django-models django-forms django-templates django-views
一种方法是在您的第一个视图中将对象放入会话中,然后您可以从第二个视图中的 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})
【讨论】:
使用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
【讨论】: