3

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

この後、すべての出力の最後に文字列「None」が含まれます。ヘルプをいただければ幸いです!!!

4

1 に答える 1

1

注意すべきことの1つはNone、空の値に対して返されることです(この回答を参照してください)。これを処理するには、次のようなことを実行して、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>
于 2013-01-01T22:46:43.030 に答える