2017-05-06 15 views
0

私はGoogle App Engineを学習しており、WebApp2フレームワーク+ Jinja2テンプレートを使い始めています。Google App Engine WebApp2テンプレートが機能しない

Main.py

import webapp2 
import os 
import jinja2 
from google.appengine.ext.webapp import template 
from google.appengine.api import users 
from google.appengine.ext import ndb 



template_dir = os.path.join(os.path.dirname(__file__), 'templates') 
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir)) 



class Handler(webapp2.RequestHandler): 
    def write(self, *a, **kw): 
     self.response.out.write(*a, **kw) 

    def render_str(self, template, **params): 
     t = jinja_env.get_template(template) 
     return t.render(params) 

    def render(self, template, **kw): 
     self, write(self.render_str(template, **kw)) 


class MainHandler(webapp2.RequestHandler): 
    def get(self): 
     self.response.write('Hello world!') 


class PageOne(Handler): 
    def get(self): 
     self.render('pageone.html') 

app = webapp2.WSGIApplication([('/', MainHandler),('/pageone', PageOne)], debug=True) 

app.yamlを

application: tbapp 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: yes 

handlers: 
- url: /favicon\.ico 
    static_files: favicon.ico 
    upload: favicon\.ico 

- url: .* 
    script: main.app 

libraries: 
- name: webapp2 
    version: "2.5.2" 

- name: jinja2 
    version: latest 

テンプレートでpageone.html HTMLファイルもあります:私は、次のコードを書かれている

フォルダ。

ここでファイルを実行すると、メインページが表示されますこんにちは!。しかし、私はhttp://localhost:8080/pageoneを実行すると.....それは、次のエラーを返します。..

File "E:\gae_apps\tbapp\tbapp\main.py", line 50, in get 
    self.render('pageone.html') 
    File "E:\gae_apps\tbapp\tbapp\main.py", line 40, in render 
    self, write(self.render_str(template, **kw)) 
NameError: global name 'write' is not defined 

は、誰もが間違っているのでは何だ、私を導いてくださいすることができます。私は把握することができません。 TIA

+1

'自己を与えない

def render(self, template, **kw): self.write(self.render_str(template, **kw)) 

def render(self, template, **kw): self, write(self.render_str(template, **kw)) 

を交換し、write'は' self.write' – Amber

+0

する必要があります@アンバー私はあなたにとても感謝しています...ありがとうございました!私の部分にダム – chhibbz

答えて

1

琥珀が指摘したように、Handlerrenderメソッドにタイプミスがあります。

エラーメッセージがあなたにヒント

NameError: global name 'write' is not defined

関連する問題