Re: Re: redirect klappt nicht

"Dieter Maurer" <[email protected]>
Newsgroups gmane.comp.web.zope.german
Message-ID <[email protected]>
T.Hinze wrote at 2008-12-17 13:47 +0100:
> ...
>Was mache ich denn noch falsch?

Ich habe Deine Beschreibung nicht im Detail verstanden.
Aber "response.redirect" funktioniert im Allgemeinen sehr zuverlässig.

Es funktioniert nicht, wenn

 * in der weiteren Request-Bearbeitung ein weiteres "response.redirect"
   aufgerufen (dann wird dieses ausgeführt) oder eine Exception
   ausgelöst wird.

   Wie andere Dir ja bereits geschrieben haben, führt ein
   "response.redirect" nicht zum sofortigen Abbruch (und Ausführung
   des "redirect") sondern die Request-Bearbeitung läuft normal
   weiter -- und kann das frühere "redirect" unwirksam machen

 * "response.setStatus" hat ein optionales Argument "lock".
   Wird "setStatus" mit "lock=True" aufgerufen, wird der Status
   eingefroren und kann nicht mehr von einem folgenden "redirect"
   (ein enthält ein implizites "setStatus(302)") überschrieben werden.


Verwende einen TCP-Logger (z.B. "etherreal", "wireshark", "tcpwatch", ....)
um die Kommunikation zwischen Client und Server zu überwachen.

Ein Redirect ist gekennzeichnet durch einen "location" Antwort-Header
und einen Status 300 oder 302.


Es gibt übrigens auch eine unmittelbar abbrechende Redirect-Variante:

   from zExceptions import Redirect

   raise Redirect(location).

Achtung: dabei wir die aktuelle Transaktion abgebrochen und der Request
hat keinerlei Wirkung auf persistente Daten.



-- 
Dieter


_______________________________________________
zope mailing list
[email protected]
https://mail.dzug.org/mailman/listinfo/zope
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.