Frage

Bei all meiner Vorlagenwiedergabe für eine bestimmte App endet die Ausgabe mit None:

...</html>None

Dies muss ein Fehler und wahrscheinlich in meinem Code sein, und ich habe Tage damit verbracht, ihn aufzuspüren. Meine App hat nichts Besonderes, und dieser Fehler wird auf jeder Seite angezeigt, die ich mit Vorlagenrendern verwendet habe, unabhängig davon, ob ich eine separate Vorlage -Engine verwende oder nicht. Mein Code hat nichts Besonderes:

    class Objectives(NewBaseHandler):

        @user_required
        def get(self):
            user = auth_models.User.get_by_id(long(self.auth.get_user_by_session()['user_id']))
            if user:
                self.render_template('objectives.html', {'user': user})
            else:

                self.render_template('/', {})

class NewBaseHandler(BaseHandler):

    """
........BaseHandler for all requests

........Holds the auth and session properties so they are reachable for all requests
...."""

    def dispatch(self):
        """
............Save the sessions for preservation across requests
........"""

        # self.session_store = sessions.get_store(request=self.request)
        # if self.request.host.find('localhost') > 0:  # for a Swedish domain that uses Swedish
        # or lang = os.environ.get("HTTP_ACCEPT_LANGUAGE")

        i18n.get_i18n().set_locale('sv')
        lang_code_get = self.request.get('hl', None)
        if lang_code_get:
           #self.session['i18n_language'] = lang_code_get
           i18n.get_i18n().set_locale(lang_code_get)
        try:
            response = super(NewBaseHandler, self).dispatch()
            self.response.write(response)
        finally:
            self.session_store.save_sessions(self.response)

    @webapp2.cached_property
    def auth(self):
        return auth.get_auth()

    @webapp2.cached_property
    def session_store(self):
        return sessions.get_store(request=self.request)

    @webapp2.cached_property
    def auth_config(self):
        """
............Dict to hold urls for login/logout
........"""

        return {'login_url': self.uri_for('login'),
                'logout_url': self.uri_for('logout')}

class BaseHandler(webapp2.RequestHandler):

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

    def render_template(self, file, template_args):
        path = os.path.join(os.path.dirname(__file__), 'templates',
                            file)
        self.response.out.write(template.render(path, template_args))

    def render_jinja(self, filename, **template_args):
        self.response.write(self.jinja2.render_template(filename,
                            **template_args))

Wie kann ich prüfen, wo die Ausgabe? None kommt von? Es kommt wahrscheinlich nicht aus der Vorlage und scheint nicht von den Handlern zu kommen und es gibt keinen anderen Code.

Vielen Dank

War es hilfreich?

Lösung

Im Objectives.get() Sie müssen einen Wert zurückgeben. Da Sie dies nicht tun, nimmt Python an, dass das Ergebnis ist None. Dieser Wert, den Sie erhalten NewBaseHandler.dispatch() Wenn Sie zur Basis anrufen dispatch Implementierung und schreiben Sie es dann auf die Antwort.

Wenn ich Ihre App korrekt in die leere Zeichenfolge zurückbringe get Die Methode löst das Problem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top