GAE上的jinja2在每个回复中写出“无”

时间:2013-01-01 15:42:59

标签: python google-app-engine templates jinja2

无论处理程序的输出有多简单,我在每个响应的末尾都会得到一个None字符串。

这是我的处理程序代码:

class BaseHandler(webapp2.RequestHandler):
    @webapp2.cached_property
    def jinja2(self):
        return jinja2.get_jinja2(app=self.app)

    def render_response(self, _template, **context):
        rv = self.jinja2.render_template(_template, **context)
        self.response.write(rv)


class SimpleHandler(BaseHandler):
     def get(self):
        template_values = {
            'error' : "",
            'url' : os.path.basename(self.request.url)
        }

        self.render_response('temp.html', **template_values)

模板:

<!DOCTYPE html>
<html>
    <head>
        <title>Home</title> 
                <script src="http://code.jquery.com/jquery-1.8.2.js"></script>
    </head>
    <body>
        <div></div>
        <div>
            Test
        </div>
        <div>{{ error }}</div>
    </body>
</html>

最后输出

Test
None

在此之后,每个输出都包含字符串&#34; None&#34;在末尾。感谢帮助!!!

1 个答案:

答案 0 :(得分:1)

需要注意的一点是,None将返回一个空值(请参阅this answer)。为了处理它,你可以做一些这样的事情,以确保error只有在存在时才会打印出来:

<html>
    <head>
        <title>Home</title> 
        <script src="http://code.jquery.com/jquery-1.8.2.js"></script>
    </head>
    <body>
        <div></div>
        <div>
            Test
        </div>
        <!-- Here we check to see 'error' is not null; if not, print -->
        {% if error %}
            <div>{{ error }}</div>
        {% endif %}
    </body>
</html>