On Mar 12, 2011, at 11:54 AM, Jonathan Lundell wrote:
> 
> On Mar 12, 2011, at 11:39 AM, pierreth wrote:
>> 
>> I think you mean the response object.
> 
> Yes, response.
> 
>> The example code you gave still
>> use the character "<" so it does not help.
> 
> Did you try it? How about the second version?

Hmm. I take back what I said earlier: all versions work for me, including your 
original one.

In what context are you using the expression?

> 
>> 
>> In fact, the problem is that web2py is not processing the xml document
>> but it parse directly the html file. I would really like Massimo to
>> fix this.
>> 
>> On Mar 12, 2:15 pm, Jonathan Lundell <[email protected]> wrote:
>>> On Mar 12, 2011, at 11:05 AM, pierreth wrote:
>>> 
>>> 
>>> 
>>> 
>>> 
>>>> Hello,
>>> 
>>>> I have small problem when the characters "< and ">" are used in web2py
>>>> html template views. Using them for Python breaks the html:
>>> 
>>>> {{="OK" if x < 0 else "bad"}}
>>> 
>>>> Because these characters are not escaped in the code, the html file is
>>>> no longer well formed.
>>> 
>>>> Using the html entities "&lt;" and "&gr;" does not solve the problem
>>>> because web2py gives an error when theses characters are used as
>>>> Python code in templates.
>>> 
>>>> Is it possible to fix this to have well formed html for web2py
>>>> templates?
>>> 
>>> This is a consequence of the way the '=' (request.write) operator behaves 
>>> at the beginning of a code block: it treats the entire string as its 
>>> argument string, something like: request.write('"OK" if x < 0 else "bad"')
>>> 
>>> You can rewrite it to use request.write explicitly, or to put each = 
>>> operator on its own line.
>>> 
>>> {{request.write("OK" if x < 0 else "bad")}}
>>> 
>>> or
>>> 
>>> {{if x < 0:
>>> ="OK"
>>> else:
>>> ="bad"
>>> pass
>>> 
>>> }}
>>> 
>>> (I think)
>>> 
>>> When the '=' operator is embedded in a code block, it consumes everything 
>>> until the end of the physical line or code block, whichever comes first. 
>>> When it begins a code block, it consumes the entire block.
> 
> 


Reply via email to