|
|
Documentation - Modules
3.8.3. Response (implicit)
Like the request module, the response module is also loaded implicitly into every
Spyce environment. It provides the following methods:
- write( string ):
Sends a string to the client. All
writes are buffered by default and sent at the end of Spyce processing to
allow appending headers, setting cookies and exception handling. Note that
using the print statement is often easier, and
stdout is implicitly redirected
to the browser.
- writeln( string ):
Sends a string to the client, and
appends a newline.
- writeStatic( string ):
All static HTML strings are
emitted to the client via this method, which (by default) simply calls
write(). This method is not commonly invoked by the user.
- writeExpr( object ):
All expression results are emitted to
the client via this method, which (by default) calls write() with the str()
of the result object. This method is not commonly invoked by
the user.
- clear( ): Clears the output buffer.
- flush( ): Sends buffered output to the client immediately. This
is a blocking call, and can incur a performance hit.
- setContentType( contentType ):
Sets the MIME content
type of the response.
- setReturnCode( code ):
Set the HTTP return code for this
response. This return code may be overriden if an error occurs or by
functions in other modules (such as redirects).
- addHeader( type, data, [replace] ):
Adds the header line
"type: data" to the outgoing response. The
optional replace flag determines whether any previous headers of the
same type are first removed.
- unbuffer():
Turns off buffering on the output stream. In
other words, each write is followed by a flush(). An unbuffered output
stream should be used only when sending large amounts of data (ie. file
transfers) that would take up server memory unnecessarily, and involve
consistently large writes. Note that using an unbuffered response stream
will not allow the output to be cleared if an exception occurs. It will also
immediately send any headers.
- isCancelled():
Returns true if it has been detected that the
client is no longer connected. This flag will turn on, and remain on, after
the first client output failure. However, the detection is best-effort, and
may never turn on in certain configurations (such as CGI) due to buffering.
- timestamp( [t] ):
Timestamps the response with an HTTP
Date: header, using the optional t
parameter, which may be either be the number of seconds since the epoch
(see Python time
module), or a properly formatted HTTP date string. If t is omitted,
the current time is used.
- expires( [t] ):
Sets the expiration time of the
response with an HTTP Expires: header, using the
optional t parameter, which may be either the number of seconds
since the epoch (see Python time
module), or a properly formatted HTTP date string. If t is omitted,
the current time is used.
- expiresRel( [secs] ):
Sets the expiration time of the
response relative to the current time with an HTTP Expires: header. The optional secs (which may
also be negative) indicates the number of seconds to add to the current time
to compute the expiration time. If secs is omitted, it defaults to zero.
- lastModified( [t] ):
Sets the last modification time of
the response with an HTTP Last-Modified: header,
using the optional t parameter, which can be either the number
of seconds since the epoch (see Python time
module), or a properly formatted HTTP date string, or None indicating the
current time. If t is omitted, this function will default to the last
modification time of the Spyce file for this request, and raise an exception
if this time can not be determined. Note that, as per the HTTP
specification, you should not set a last modification time that is beyond
the response timestamp.
- uncacheable():
Sets the HTTP/1.1 Cache-Control: and HTTP/1.0 Pragma: headers to inform clients and proxies that this
content should not be cached.
The methods are self-explanatory. One of the more interesting things that one could do is
to emit non-HTML content types. The example below emits the Spyce logo as a GIF.
examples/gif.spy
|
[[.import name=include ]]
[[\
# Spyce can also generate other content types
# The following code displays the Spyce logo
response.setContentType('image/gif')
import os.path, spyce
path = os.path.join(spyce.getServer().config.SPYCE_HOME, 'www', 'spyce.gif')
response.write(include.dump(path, 1))
raise spyceDone
]]
|
Run this code
|
|