2016-06-16 10 views
0

を定義していない私はトルネードサーバーからHTMLページをレンダリングしています:竜巻サーバ:Nameerrorグローバル名

class IndexHandler(tornado.web.RequestHandler): 
    @tornado.web.asynchronous 
    def get(self): 
     self.render("neo4j-panama_tornado.html") 

class WebSocketHandler(tornado.websocket.WebSocketHandler): 
    def open(self): 
     print("WebSocket opened") 

    def on_message(self, message): 
     #print self 
     print message 
     message_new = message.split('XXXX') 
     keyword_or_query = message_new[0] 
     label_type = message_new[1] 
     print keyword_or_query 
     print node_id 
     self.write_message(node_id) 

    def on_close(self): 
     pass 

app = tornado.web.Application([ 
    (r'/', IndexHandler), 
    (r'/websocket', WebSocketHandler), 
    (r'/(.+)', web.StaticFileHandler, {'path': 'web_resources/static/'}), 
    (r'/(favicon.ico)', web.StaticFileHandler, {'path': 'web_resources/static/img/'}), # TODO: fix favicon (not being found-) 
]) 

if __name__ == '__main__': 
    parse_command_line() 
    app.listen(options.port) 
    tornado.ioloop.IOLoop.instance().start() 

を私は次のエラーを取得する:AngularJSを使用して

Traceback (most recent call last): 
    File "/usr/lib/python2.7/site-packages/tornado-4.3-py2.7-cygwin-2.5.1-i686.egg/tornado/web.py", line 1401, in _stack_context_handle_exception 
    raise_exc_info((type, value, traceback)) 
    File "/usr/lib/python2.7/site-packages/tornado-4.3-py2.7-cygwin-2.5.1-i686.egg/tornado/web.py", line 1603, in wrapper 
    result = method(self, *args, **kwargs) 
    File "server.py", line 120, in get 
    self.render("neo4j-panama_tornado.html") 
    File "/usr/lib/python2.7/site-packages/tornado-4.3-py2.7-cygwin-2.5.1-i686.egg/tornado/web.py", line 699, in render 
    html = self.render_string(template_name, **kwargs) 
    File "/usr/lib/python2.7/site-packages/tornado-4.3-py2.7-cygwin-2.5.1-i686.egg/tornado/web.py", line 806, in render_string 
    return t.generate(**namespace) 
    File "/usr/lib/python2.7/site-packages/tornado-4.3-py2.7-cygwin-2.5.1-i686.egg/tornado/template.py", line 345, in generate 
    return execute() 
    File "neo4j-panama_tornado_html.generated.py", line 5, in _tt_execute 
    _tt_tmp = var.Name # neo4j-panama_tornado.html:259 
NameError: global name 'var' is not defined 

HTMLコード:

<p>Name: <input type="text" ng-model="name"></p> 
<button ng-click="myFunction()">Search</button> 
<table> 
    <tr> 
     <td>Index</td> 
     <td>Name</td> 
     <td>ID</td> 
    </tr> 
    <tr ng-repeat="x in names"> 
     <td>{{ x.Name }}</td> 
     <td>{{ x.Country }}</td> 
    </tr> 
</table> 

上記のHTMLコードは単独で実行するとうまく動作しますが、Tornadoでレンダリングするとエラーが発生します。

答えて

0

TornadoがHTMLファイルをテンプレートとしてレンダリングしようとしています。したがって、テンプレートの名前空間で "var"を検索していて、それを見つけられません。あなたは、「/」の代わりの静的ファイルハンドラを使用する必要があります。

app = tornado.web.Application([ 
    (r"/?()", web.StaticFileHandler, {'path': 'templates', 
             'default_filename': 'index.html'}), 
]) 

「()」URLに「キャプチャグループ」です。その理由はちょっと微妙です。the documentation for StaticFileHandlerと、 "get()メソッドへのパス引数の値を解析するために正規表現のキャプチャグループが必要であることに注意してください。

+0

(r '/(。+)'、web.StaticFileHandler、{'path': 'web_resources/static /'})、そうすることはできますか?あなたはそれを解決する方法を教えてもらえますか? –

+0

StaticFileHandlerを使用するために私の答えを編集しました。 –

関連する問題