0

我正在尝试使用 webapp2 和 jinja2 将用 PHP 完成的静态站点移植到 Google App Engine。
我的 PHP 的 index.php 看起来像这样:

<body>
<div id="container">
    <header id="header"><?php require_once DIR_HTML."header.phtml" ?></header>
    <section id="main"><?php require_once DIR_HTML.$_GET['page'].".phtml" ?></section>
    <footer id="footer"><?php require_once DIR_HTML."footer.phtml" ?></footer>
</div>
</body>

在我的 google-app-engine 代码中,我有这个:

import webapp2, jinja2, os

jinja_environment = jinja2.Environment(loader=jinja2.FileSystemLoader(os.path.dirname(__file__)))

class MainPage(webapp2.RequestHandler):
    def get(self):
        template_values = {
        }

        template = jinja_environment.get_template('index.html')
        self.response.out.write(template.render(template_values))

class AboutPage(webapp2.RequestHandler):
    def get(self):
        template_values = {
        }

        template = jinja_environment.get_template('templates/about.html')
        self.response.out.write(template.render(template_values))        

app = webapp2.WSGIApplication([('/', MainPage), ('/about', AboutPage)], debug=True)

如何在 Python 中复制相同类型的功能?

4

1 回答 1

2

模板继承

Jinja 最强大的部分是模板继承。模板继承允许您构建一个基本“骨架”模板,该模板包含您网站的所有常见元素并定义子模板可以覆盖的块。

<!DOCTYPE html>
<html lang="en">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    {% block head %}
        <link rel="stylesheet" href="style.css" />
        <title>{% block title %}{% endblock %} - My Webpage</title>
    {% endblock %}
</head>
<body>
    <div id="content">{% block content %}{% endblock %}</div>
    <div id="footer">
        {% block footer %}
            &copy; Copyright 2008 by <a href="http://domain.invalid/">you</a>.
        {% endblock %}
    </div>
</body>
于 2013-02-07T15:19:38.953 回答