SSI allows for some programmability in its own right through the use of conditional expressions. The structure of this conditional construct is:
<!--#if expr="test_condition" --> <!--#elif expr="test_condition" --> <!--#else --> <!--#endif -->
A test condition can be any sort of logical comparison, either comparing values to one another, or testing the 'truth' of a particular value.
The source of variables used in conditional expressions is distinct from
the set of global data used by the Python code executed within a page.
Instead, the variables are sourced from the subprocess_env table
object contained within the request object. The values of these variables
can be set from within a page using the SSI 'set' directive, or by a range
of other Apache directives within the Apache configuration files such as
BrowserMatchNoCase and SetEnvIf.
To set these variables from within a mod_python handler, the
subprocess_env table object would be manipulated directly through
the request object.
from mod_python import apache
def fixuphandler(req):
debug = req.get_config().get('PythonDebug', '0')
req.subprocess_env['DEBUG'] = debug
return apache.OK
If being done from within Python code contained within the page itself, the request object would first have to be accessed via the filter object.
<!--#python exec="
debug = filter.req.get_config().get('PythonDebug', '0')
filter.req.subprocess_env['DEBUG'] = debug
" -->
<html>
<body>
<!--#if expr="${DEBUG} != 0" -->
DEBUG ENABLED
<!--#else -->
DEBUG DISABLED
<!--#endif -->
</body>
</html>