[Twisted-web] HTTP redirection from data_*/render_* methods

en.karpachov at ospaz.ru en.karpachov at ospaz.ru
Sat Jul 16 02:02:39 MDT 2005


On Fri, Jul 15, 2005 at 11:45:24AM -0700, Donovan Preston wrote:
> Even if you do raise an exception, all output generated up to that  
> point will have already been sent out over the socket to the browser.  
> This means the headers will already have been written, and  
> redirecting will have no effect.

It is why I set the buffered = True in my example.

> What you want instead is to set the "buffered" attribute of your Page  
> class to true before it starts rendering. This will cause nevow to  
> delay sending any output to the browser until the entire page is done  
> rendering, allowing you to do a redirect in the middle of it.
> 
> Personally, I don't think it's a good idea. You should decide about  
> the redirect up front, that way you avoid doing wasted work on the  

Well, one possible usage example could be

<table nevow:data="sqlquery" nevow:render="sequence">
  <tr nevow:pattern="item"><td>...</td></tr>
  <tr nevow:pattern="empty">
     <td nevow:render="redirect /notfound">None at all</td>
  </tr>
</table>

> server. Buffering also isn't as cool, because pages will chunk in  
> rather than streaming in.
> 
> Donovan

Thanks!

-- 
jk



More information about the Twisted-web mailing list