6

Jeśli masz dwa widoki, pierwszy korzysta z modelu, który pobiera wprowadzone dane od użytkownika (data urodzenia, nazwisko, numer telefonu itp.), A drugi używa tych informacji do utworzenia stół.Django przekazuje obiekt z widoku do następnego do przetwarzania

Jak byś przekazać utworzony obiekt w pierwszym widoku do następnego widoku, dzięki czemu można go używać w szablonie Drugi pogląd za

będę wdzięczny za każdą pomoc można udostępnić

Odpowiedz

9

Jednym ze sposobów jest umieść obiekt w sesji w swoim pierwszym widoku, który możesz następnie pobrać z request.session w drugim widoku.

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

Czy mógłbyś wyjaśnić, co przez to rozumiesz? może link do odpowiedniego dokumentu django? Nadal uczę się tych rzeczy. Dziękuję za odpowiedź! – JohnnyCash

+0

Dodałem przykład do mojej odpowiedzi dla ciebie. – Brandon

+0

to wygląda na to, że może działać dla mnie! Jeszcze jedno ostatnie pytanie (nieważne, przepraszam) ... w jaki sposób mogę połączyć się z zapisanym formularzem z szablonu? czy nazywam je tym, jak je nazywają w szablonie do pierwszego widoku? Jeszcze raz dziękuję! – JohnnyCash

2

Użyj HttpResponseRedirect skierować do widoku tabeli w/id nowo utworzonego obiektu. Oto skrócony przykład:

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

Jak jednak zadzwonić do obiektu? Czy mógłbyś podać krótki przykład? Dzięki! – JohnnyCash

+0

@JohnnyCash: Proszę. – sdolan

Powiązane problemy