class MainHandler(webapp.RequestHandler):
def render(self, template_name, template_data):
path = os.path.join(os.path.dirname(__file__), 'static/templates/%s.html' % template_name)
self.response.out.write(template.render(path, template_data)) # error here
def get(self):
self.response.out.write("hi")
def main():
application = webapp.WSGIApplication([('/', MainHandler)],
debug=True)
util.run_wsgi_app(application)
if __name__ == '__main__':
main()
这会出错:
Traceback (most recent call last):
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3192, in _HandleRequest
self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3135, in _Dispatch
base_env_dict=env_dict)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 516, in Dispatch
base_env_dict=base_env_dict)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2394, in Dispatch
self._module_dict)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2304, in ExecuteCGI
reset_modules = exec_script(handler_path, cgi_path, hook)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2200, in ExecuteOrImportScript
exec module_code in script_module.__dict__
File "main.py", line 22, in <module>
class MainHandler(webapp.RequestHandler):
File "main.py", line 38, in MainHandler
self.writeOut(template.render(path, template_data))
NameError: name 'self' is not defined
我做错了什么?
答案 0 :(得分:20)
在定义类时会发生异常,这意味着您的缩进已关闭。 Python中的选项卡相当于8个空格,因此如果前面的所有行都使用了制表符并且tabstop设置为4个空格,那么缩进只有看起来正确。
答案 1 :(得分:3)
万一有人发生这种情况并且正在寻找一个与缩进无关的解决方案,这对于如何/何时使用self
是一个很好的参考。
答案 2 :(得分:1)
python的大多数样式指南,包括google style guide,建议你使用空格而不是标签...大多数文本编辑器也支持这一点。帮助您避免这样的错误。