<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <link rel="STYLESHEET" href="modpython.css" type='text/css' /> <link rel="first" href="modpython.html" title='Mod_python Manual' /> <link rel='contents' href='contents.html' title="Contents" /> <link rel='index' href='genindex.html' title='Index' /> <link rel='last' href='about.html' title='About this document...' /> <link rel='help' href='about.html' title='About this document...' /> <link rel="next" href="ssi-data-scope.html" /> <link rel="prev" href="ssi-overview.html" /> <link rel="parent" href="ssi.html" /> <link rel="next" href="ssi-data-scope.html" /> <meta name='aesop' content='information' /> <title>6.2 Using Python Code</title> </head> <body> <DIV CLASS="navigation"> <div id='top-navigation-panel' xml:id='top-navigation-panel'> <table align="center" width="100%" cellpadding="0" cellspacing="2"> <tr> <td class='online-navigation'><a rel="prev" title="6.1 Overview of SSI" href="ssi-overview.html"><img src='previous.png' border='0' height='32' alt='Previous Page' width='32' /></A></td> <td class='online-navigation'><a rel="parent" title="6. Server Side Includes" href="ssi.html"><img src='up.png' border='0' height='32' alt='Up One Level' width='32' /></A></td> <td class='online-navigation'><a rel="next" title="6.3 Scope of Global" href="ssi-data-scope.html"><img src='next.png' border='0' height='32' alt='Next Page' width='32' /></A></td> <td align="center" width="100%">Mod_python Manual</td> <td class='online-navigation'><a rel="contents" title="Table of Contents" href="contents.html"><img src='contents.png' border='0' height='32' alt='Contents' width='32' /></A></td> <td class='online-navigation'><img src='blank.png' border='0' height='32' alt='' width='32' /></td> <td class='online-navigation'><a rel="index" title="Index" href="genindex.html"><img src='index.png' border='0' height='32' alt='Index' width='32' /></A></td> </tr></table> <div class='online-navigation'> <b class="navlabel">Previous:</b> <a class="sectref" rel="prev" href="ssi-overview.html">6.1 Overview of SSI</A> <b class="navlabel">Up:</b> <a class="sectref" rel="parent" href="ssi.html">6. Server Side Includes</A> <b class="navlabel">Next:</b> <a class="sectref" rel="next" href="ssi-data-scope.html">6.3 Scope of Global</A> </div> <hr /></div> </DIV> <!--End of Navigation Panel--> <H1><A NAME="SECTION008200000000000000000"></A><A NAME="ssi-python-code"></A> <BR> 6.2 Using Python Code </H1> <P> The extensions to mod_python to allow Python code to be used in conjunction with SSI introduces the new SSI directive called 'python'. This directive can be used in two forms, these being 'eval' and 'exec' modes. In the case of 'eval', a Python expression is used and it is the result of that expression which is substituted in place into the page. <P> <div class="verbatim"><pre> <!--#python eval="10*'HELLO '" --> <!--#python eval="len('HELLO')" --> </pre></div> <P> Where the result of the expression is not a string, the value will be automatically converted to a string by applying <code>str()</code> to the value. <P> In the case of 'exec' a block of Python code may be included. For any output from this code to appear in the page, it must be written back explicitly as being part of the response. As SSI are processed by an Apache output filter, this is done by using an instance of the mod_python <code>filter</code> object which is pushed into the global data set available to the code. <P> <div class="verbatim"><pre> <!--#python exec=" filter.write(10*'HELLO ') filter.write(str(len('HELLO'))) " --> </pre></div> <P> Any Python code within the 'exec' block must have a zero first level indent. You cannot start the code block with an arbitrary level of indent such that it lines up with any indenting used for surrounding HTML elements. <P> Although the mod_python <code>filter</code> object is not a true file object, that it provides the <code>write()</code> method is sufficient to allow the <code>print</code> statement to be used on it directly. This will avoid the need to explicitly convert non string objects to a string before being output. <P> <div class="verbatim"><pre> <!--#python exec=" print >> filter, len('HELLO') " --> </pre></div> <P> <DIV CLASS="navigation"> <div class='online-navigation'> <p></p><hr /> <table align="center" width="100%" cellpadding="0" cellspacing="2"> <tr> <td class='online-navigation'><a rel="prev" title="6.1 Overview of SSI" href="ssi-overview.html"><img src='previous.png' border='0' height='32' alt='Previous Page' width='32' /></A></td> <td class='online-navigation'><a rel="parent" title="6. Server Side Includes" href="ssi.html"><img src='up.png' border='0' height='32' alt='Up One Level' width='32' /></A></td> <td class='online-navigation'><a rel="next" title="6.3 Scope of Global" href="ssi-data-scope.html"><img src='next.png' border='0' height='32' alt='Next Page' width='32' /></A></td> <td align="center" width="100%">Mod_python Manual</td> <td class='online-navigation'><a rel="contents" title="Table of Contents" href="contents.html"><img src='contents.png' border='0' height='32' alt='Contents' width='32' /></A></td> <td class='online-navigation'><img src='blank.png' border='0' height='32' alt='' width='32' /></td> <td class='online-navigation'><a rel="index" title="Index" href="genindex.html"><img src='index.png' border='0' height='32' alt='Index' width='32' /></A></td> </tr></table> <div class='online-navigation'> <b class="navlabel">Previous:</b> <a class="sectref" rel="prev" href="ssi-overview.html">6.1 Overview of SSI</A> <b class="navlabel">Up:</b> <a class="sectref" rel="parent" href="ssi.html">6. Server Side Includes</A> <b class="navlabel">Next:</b> <a class="sectref" rel="next" href="ssi-data-scope.html">6.3 Scope of Global</A> </div> </div> <hr /> <span class="release-info">Release 3.3.1, documentation updated on January 29, 2007.</span> </DIV> <!--End of Navigation Panel--> </BODY> </HTML>