Re: [Cheetahtemplate-discuss] using compiled template as CGI script
Brought to you by:
rtyler,
tavis_rudd
From: <ir...@ms...> - 2002-05-22 18:26:45
|
On Wed, May 22, 2002 at 07:47:00PM +1000, Paul Sorenson wrote: > I mightn't have explained myself very well. > > All the .py files work just fine. It is only when I upload the .tmpl file > to the remote server that the cgi script returns a blank screen, actually: > > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> > <HTML><HEAD> > <META http-equiv=Content-Type content="text/html; > charset=windows-1252"></HEAD> > <BODY><XMP></XMP></BODY></HTML> That was probably generated by the browser, since I get something like that in certain browsers if I use a file: URL on a zero-length file. I tried making an x.tmpl file, compiling it, waiting a minute, then touching x.tmpl so it's modification time would be later than x.py, then "chmod 000 x.tmpl" (removing all read permission), then running x.py. It failed with: Traceback (most recent call last): File "x.py", line 120, in ? x().runAsMainProgram() File "/local/opt/Python/lib/python2.2/site-packages/Webware/Cheetah/Template.py", line 331, in runAsMainProgram CmdLineIface(templateObj=self).run() File "/local/opt/Python/lib/python2.2/site-packages/Webware/Cheetah/TemplateCmdLineIface.py", line 59, in run print self._template File "x.py", line 88, in respond self.compile(file=self._filePath) File "/local/opt/Python/lib/python2.2/site-packages/Webware/Cheetah/Template.py", line 230, in compile settings=self._compilerSettings, File "/local/opt/Python/lib/python2.2/site-packages/Webware/Cheetah/Compiler.py", line 929, in __init__ f = open(file) # Raises IOError. IOError: [Errno 13] Permission denied: '/tmp/x.tmpl' Perhaps this is what's happening to you, and through some quirk of the webserver setup you're not getting the "Internal server error". The traceback should appear in the webserver error log. In any case, Cheetah should handle the situation more gracefully, and fall back to the precompiled template if it can't open the .tmpl file. The exchange today got me thinking that perhaps when we have "cheetah fill" implemented (which compiles and fills a template in one step), we can make .tmpl files self executable. If the user puts something like #!/usr/bin/cheetah shbang at the top of the .tmpl file and gives it execute permission, Cheetah could read the template definition, chop off the first line, compile and fill it. This coupled with Tavis' suggestion for a .cgiHeaders method, would allow .tmpl files (with or without the .tmpl extension) to run as CGI scripts. Plus it may be useful during debugging or in other places too. Although for the highest efficiency, precompiled .py templates still rule. -- -Mike (Iron) Orr, ir...@ms... (if mail problems: ms...@oz...) http://iron.cx/ English * Esperanto * Russkiy * Deutsch * Espan~ol |