6

如果您有2個視圖,第一個視圖使用從用戶輸入的信息(出生日期,姓名,電話號碼等)的模型,第二個視圖使用此信息創建表。Django將對象從視圖傳遞到下一個處理

你將如何通過創建的對象在第一個視圖到下一個視圖,以便您可以使用它在第二視圖的模板

我會很感激任何幫助,您可以共享

回答

9

一種方法是將對象放入第一個視圖中的會話中,然後您可以從第二個視圖中的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}) 
+0

你能澄清你的意思嗎?也許鏈接到相關的Django文檔?我仍然在學習這東西 感謝您的回覆! – JohnnyCash

+0

我爲你的答案增加了一個例子。 – Brandon

+0

這看起來可能適合我! 雖然最後一個問題,(與我裸露我很抱歉)..我如何調用從模板保存的表單?我是通過在第一個視圖的模板中調用它們來呼叫它們的嗎? 再次感謝! – JohnnyCash

2

使用HttpResponseRedirect指向w /新創建的對象的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 
+0

然後你會怎麼調用這個對象?你介意提供一個簡單的例子嗎?謝謝! – JohnnyCash

+0

@JohnnyCash:你走了。 – sdolan

相關問題