Google app engine 在google app engine中提供html文件并运行python脚本

Google app engine 在google app engine中提供html文件并运行python脚本,google-app-engine,jinja2,webapp2,Google App Engine,Jinja2,Webapp2,我正试图建立一个有许多静态html文件的网站。目前,我使用的app.yaml处理程序将html文件作为静态文件提供 - url: /(.*) static_files: www/\1 upload: www/(.*) secure: always 我现在需要做的是,每当有人被重定向到这些html文件时,能够运行一些python代码 是否有某种方法既可以将html文件作为静态文件提供,又可以在调用时运行python脚本?当然,除了javascript之外 我最初的想法是为运行脚本的html文件

我正试图建立一个有许多静态html文件的网站。目前,我使用的app.yaml处理程序将html文件作为静态文件提供

 - url: /(.*)
static_files: www/\1
upload: www/(.*)
secure: always
我现在需要做的是,每当有人被重定向到这些html文件时,能够运行一些python代码

是否有某种方法既可以将html文件作为静态文件提供,又可以在调用时运行python脚本?当然,除了javascript之外

我最初的想法是为运行脚本的html文件提供一个处理程序,然后该脚本将执行它需要执行的后端任务,然后使用webapp2或jinja将html文件作为模板提供。我的html文件存储在python文件下面的几个目录中的几个子目录中:

-app.yaml
-main.py
-www
   -version1
       --sub directories stored here
目前,我的测试处理程序尝试并使其工作如下:

class testHandler(BaseHandler):

   def get(self, url):

      tplPath = self.request.url
      parseURL = urlparse(tplPath)

      path = "www" + dirname(parseURL.path)
      filename = basename(parseURL.path)

      return jinja2.Environment(
      loader=jinja2.FileSystemLoader(path)
      ).get_template(filename).render()
它获取url或请求的html文件,添加路径的www部分(旁注,我从提供的url中删除了www部分以保持其与旧网站布局一致),然后尝试呈现路径文件夹中的html文件

当我尝试运行此程序时,比如访问https://AppID.appspot.com/version1/product1/index.html,我会得到错误

TemplateNotFound: index.html 
我检查了发送到加载程序的路径,它是包含index.html文件的目录的正确路径


这里有什么明显的我遗漏的吗?请记住,我使用jinja2的经验非常有限。或者,是否有其他方法可以运行python脚本并仍然提供html文件?非常感谢您的帮助。

您使用的是模板的相对路径,Jinja2需要一个绝对路径。因此,请执行以下操作,而不是
path=“www”+dirname(parseURL.path)

# assuming that dirname is os.path.dirname:
path = os.path.join(dirname(__file__),"www" + dirname(parseURL.path))

这一行的作用是获取
\uuuuuuuuuuuuuuuuu文件的目录名,
\uuuuuuuuuuuuuu
是当前运行的
*.py
文件的完整绝对路径。因此,
dirname(\uuuuu文件)
是您的工作目录。替换这一行后,其余的代码应该可以工作。

您使用的是模板的相对路径,Jinja2需要一个绝对路径。因此,请执行以下操作,而不是
path=“www”+dirname(parseURL.path)

# assuming that dirname is os.path.dirname:
path = os.path.join(dirname(__file__),"www" + dirname(parseURL.path))
这一行的作用是获取
\uuuuuuuuuuuuuuuuu文件的目录名,
\uuuuuuuuuuuuuu
是当前运行的
*.py
文件的完整绝对路径。因此,
dirname(\uuuuu文件)
是您的工作目录。在替换这一行之后,剩下的代码应该可以工作了