Seite 1 von 1
veränderten request mit HttpResponseRedirect senden
Verfasst: Dienstag 5. April 2022, 16:29
von Metatron
ich möchte mit den HttpResponseRedirect einen request mit senden.
folgendes beispiel:
Code: Alles auswählen
def foo(request):
post = request.POST.copy()
post.update({'id': 2})
request.POST = post
return HttpResponseRedirect(reverse('foo:boo'))
def boo(request):
print(request.POST)
print(request.POST['id'])
derzeit erhalte ich mit
folgende ausgabe:
Re: veränderten request mit HttpResponseRedirect senden
Verfasst: Dienstag 5. April 2022, 19:48
von sparrow
So funktioniert das nicht.
Wenn du ein Redirect zurück sendest, dann macht dein Client eine neue Anfrage auf die zurückgeschickte URL. Diese neue Anfrage weiß aber nicht, dass du da irgendwie am request rumgedocktert hast, denn der Client würde höchstens seinen ursprünglichen Content noch einmal senden.
Was hast du eigentlich vor? Ein Redirect scheint es eher nicht zu sein.
Re: veränderten request mit HttpResponseRedirect senden
Verfasst: Mittwoch 6. April 2022, 07:25
von Metatron
Die Methode A baut eine Website. Diese Website schickt mir dann Daten die die speichere ich mit Methode B. Anschließend will ich Methode A wieder aufrufen um die Aktualisierte Website anzuzeigen.
Methode A benötigt aber einige Parameter und die muss ich mit der Methode B mitschicken.
speudo:
Code: Alles auswählen
Methode_A(request):
objekt = foo.objects.get(user= request.user, id=request.POST['id']).first()
return render(request, 'foo/foo.html', { 'objekt ': objekt })
Methode_B(request):
objekt = save(request.POST)
Methode_A(request.POST mit objekt.pk)
Re: veränderten request mit HttpResponseRedirect senden
Verfasst: Mittwoch 6. April 2022, 07:35
von sparrow
Warum sollte funktion_b (Namen werden in Python klein mit Unterstrich geschrieben, ausgenommen Klassen [PascalCase] und Konstanten [KOMPLETT_GROSS]) funktion_a wieder aufrufen? Das macht vom Ablauf her keinen Sinn.
funktion_a kann doch funktion_b einfach aufrufen und die gibt mit return zurück, was auch immer funktion_a braucht im das Ergebnis zu rendern.
Ansonsten musst du dein Problem vielleicht etwas weniger abstrakt darstellen und mal konkreter werden, was du eigentlich erreichen willst. Denn im Augenblick scheint das, was du für die Lösung hälst, nicht zum Problem zu passen.
Re: veränderten request mit HttpResponseRedirect senden
Verfasst: Mittwoch 6. April 2022, 07:56
von Metatron
ja ok, ist mir jetzt peinlich:
"funktion_a kann doch funktion_b einfach aufrufen und die gibt mit return zurück, was auch immer funktion_a braucht im das Ergebnis zu rendern."
klar kann ich das ergebnis einfach weiter durchreichen...
so funktioniert es:
danke
Code: Alles auswählen
Methode_A(request):
objekt = foo.objects.get(user= request.user, id=request.POST['id']).first()
return render(request, 'foo/foo.html', { 'objekt ': objekt })
Methode_B(request):
objekt = save(request.POST)
post = request.POST.copy()
post.update({'id': 2})
request.POST = post
return Methode_A(request)