テンプレートを使用したレイアウトバグ
-
26-10-2019 - |
質問
特定のアプリのすべてのテンプレートレンダリングで、出力はで終わります None
:
...</html>None
これはバグであり、おそらく私のコードでは、それを追跡しようとして何日も費やしました。私のアプリに特別なものは何もありません。このバグは、別のテンプレートエンジンを使用するかどうかにかかわらず、テンプレートレンダリングを使用するすべてのページに表示されます。私のコードについて特別なことは何もありません:
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))
出力の場所を確認するにはどうすればよいですか None
から来ていますか?おそらくテンプレートから来ておらず、ハンドラーから来ているようには見えず、他のコードはありません。
ありがとうございました
解決
の Objectives.get()
値を返す必要があります。あなたはこれをしないので、Pythonは結果が None
. 。あなたが入るこの値 NewBaseHandler.dispatch()
ベースを呼び出すとき dispatch
実装してから、それを記述して応答します。
私があなたのアプリを正しく戻ってきたら、空の文字列をで返品します get
メソッドは問題を解決します。
所属していません StackOverflow