Prepare accented characters for HTML
Peter Otten
__peter__ at web.de
Thu Mar 28 13:57:26 EDT 2019
Tony van der Hoff wrote:
> On 28/03/2019 16:58, Chris Angelico wrote:
>> On Fri, Mar 29, 2019 at 3:47 AM Tony van der Hoff <lists at vanderhoff.org>
>> wrote:
>>>
>>> On 28/03/2019 15:09, Peter Otten wrote:
>>>> Tony van der Hoff wrote:
>>>>
>>>>> On 28/03/2019 12:46, Jon Ribbens wrote:
>>>>>> On 2019-03-28, Tony van der Hoff <lists at vanderhoff.org> wrote:
>>>>>>> Thanks, Chris. The problem is not with the browser, but Jinja
>>>>>>> crashes. Probably a bug, but I'm too wedded to that engine to change
>>>>>>> now. I'll raise it on the Jinja bug site.
>>>>>>
>>>>>> It'll almost certainly be a mistake in the way you're using Jinja.
>>>>>> I can't believe nobody's used non-ASCII characters in Jinja before.
>>>>>>
>>>>>
>>>>> I'm open to suggestions.
>>>>
>>>> You have to describe the "crash". If you can provide a small script to
>>>> reproduce it that would be best. For demonstration purposes feed the
>>>> renderer a constant string instead of reading from the db.
>>>>
>>>> You should also tell us which version of Python and Jinja you are
>>>> using.
>>>>
>>>>
>>> OK,The crash is evidenced by an empty web page being generated,
>>> containing just <html><head></head><body></body></html>
>>> elements, with no content. No error messages nor exceptions.
>>>
>>> I.m using python3.5.3 and jinja 2.10.
>>>
>>> I have placed a sample script with a jnj template at
>>>
https://drive.google.com/drive/folders/1rM5F46wRqHYn0VBXUhSl8DkNcwsp2u8b?usp=sharing
>>>
>>> The template contains a commented-out line, which when uncommented shows
>>> the alleged bug.
>>
>> I can't see any of the code. Are you able to share it in a more
>> code-friendly way, such as linking to a repository on GitHub, GitLab,
>> BitBucket, SourceForge, or something else (probably with a capital
>> letter in the middle of the name, for consistency)?
>>
>> Or, even better: create a short enough example that you can just
>> include it in the body of your post?
>>
>
> I hate Google!
>
> This'll probably work:
>
> accent-test/accent-test.py:
> #####################################################################
> #!/usr/bin/env python3
>
> import os
> from jinja2 import Environment, FileSystemLoader
>
> PATH = os.path.dirname(os.path.abspath(__file__))
> TEMPLATE_ENVIRONMENT = Environment(
> autoescape=False,
> loader=FileSystemLoader(os.path.join(PATH, 'templates')),
> trim_blocks=False)
>
>
> def render_template(template_filename, context):
> return
> TEMPLATE_ENVIRONMENT.get_template(template_filename).render(context)
>
>
> def create_index_html():
>
> # put the list into a dictionary for rendering
> context = {
> 'title': "accent-test",
> 'french': 'année',
> 'french1': 'année',
> }
>
> # render the template to html
> print ("Content-type: text/html\n\n")
> print (render_template('accent-test.jnj', context))
>
> def main():
> create_index_html()
>
> ########################################
>
> if __name__ == "__main__":
> main()
> #####################################################################
>
> accent-test/templates/accent-test.jnj:
>
> #####################################################################
> <!DOCTYPE html>
> <html>
> <head>
> <meta charset="utf-8"/>
> <title>{{title}}</title>
> </head>
> <body>
> <center>
> <h1>{{title}}</h1>
> {#
> <p>{{french}}</p>
> #}
> <p>{{french1}}</p>
> </center>
> </body>
> </html>
>
> #####################################################################
>
When I run this from the command line it doesn't raise an exception. Are you
absolutely sure the script is executed with Python 3?
If it were Python 2 you'd need to specify the encoding and ensure that the
non-ascii text is unicode (u"..." rather than "...")
#!/usr/bin/env python
# -*- coding: utf-8 -*-
...
'french': u'année',
...
If that's not the problem maybe there is something useful in the server
logs?
More information about the Python-list
mailing list