Question

I expected this snippet to work:

<div class="footer">
  <? python import time; year = time.strftime('%Y') ?>
  &copy; Copyright 2008-${year}, Agendaless Consulting.
</div>

It instead fails with:

NameError: year

 - Expression: " python import time; year = time.strftime('%Y') ?>
      &copy; Copyright 2008-${year}, Agendaless Consulting."
 - Filename:   /tmp/foo/foo/foo/foo/templates/mytemplate.pt
 - Location:   (74:8)
 - Source:     ... python import time; year = time.strftime('%Y') ?>
                  ^
 - Arguments:  view: <function my_view at 0x7f48d0bca3b0>
               repeat: {...} (0)
               req: <Request - at 0x7f48d29173d0>
               renderer_name: templates/mytemplate.pt
               project: foo
               request: <Request - at 0x7f48d29173d0>
               renderer_info: <RendererHelper - at 0x7f48d0bd1450>
               context: <DefaultRootFactory None at 0x7f48d2917450>

As background, the idea is to avoid having to update the year every year:

<div class="footer">
  &copy; Copyright 2008-2012, Agendaless Consulting.
</div>
Was it helpful?

Solution

There should not be whitespace between the first ? and python. The following works well:

<div class="footer">
  <?python import time; year = time.strftime('%Y') ?>
  &copy; Copyright 2008-${year}, Agendaless Consulting.
</div>

Weird.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top