bug de mise en page avec mes modèles
-
26-10-2019 - |
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
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.