2017-05-06 6 views
0

Google App Engine을 배우고 있으며 WebApp2 프레임 워크 + Jinja2 템플릿으로 시작했습니다. 템플릿에서 pageone.html HTML 파일도 있습니다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) 

애플리케이션 제목을

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 

:

나는 다음과 같은 코드를 작성했습니다 폴더.

이제 파일을 실행할 때 기본 페이지가 안녕하세요!. 그러나, 나는 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

'자기를 주는가 교체 write'는'self.write' – Amber

+0

해야 @ 앰버 정말 고맙습니다. 고마워요! ... 그리고 그건 정말 내 부분에 멍청하다. – chhibbz

답변

1

앰버가 지적했듯이 Handlerrender 방법에 오타가 있습니다.

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

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

이 오류 메시지가 힌트 당신에게

NameError: global name 'write' is not defined