Question

Sur l'ensemble rendu mon modèle pour une application particulière, les extrémités de sortie avec None:

...</html>None

Cela doit être un bug et probablement dans mon code et je l'ai passé des jours à essayer de le suivre vers le bas. Il n'y a rien de spécial mon application et ce bug apparaît sur chaque page je utiliser le rendu du modèle, que j'utilise un moteur séparé de modèle ou non. Il n'y a rien de spécial à propos de mon code:

    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))

Comment puis-je vérifier d'où vient la None de sortie? Il est sans doute pas venir du modèle et il ne semble pas provenir des gestionnaires et il n'y a aucun autre code.

Merci

Était-ce utile?

La solution

Dans Objectives.get() vous devez retourner une valeur. Puisque vous ne le faites pas Python suppose que le résultat est None. Cette valeur que vous obtenez dans NewBaseHandler.dispatch() lors de l'appel à la mise en œuvre de base dispatch puis écrire la réponse.

Si je reçois votre application correctement retourner une chaîne vide dans la méthode de get va résoudre le problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top