2016-05-23 23 views
0

私はトルネードを使用してドメインのリストを取得し、それらのドメインを繰り返し処理し、それぞれに対してプロセスを実行します。私は間違いを続けているし、おそらく何か単純な間違っているが、私はそれを理解することはできません。ここでTypeError: 'NoneType'オブジェクトは反復可能ではありません - トルネード

は、トレースバックです:

File "/usr/local/lib/python2.7/site-packages/tornado/web.py", line 699, in render 
    html = self.render_string(template_name, **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/tornado/web.py", line 804, in render_string 
    namespace = self.get_template_namespace() 
    File "/usr/local/lib/python2.7/site-packages/tornado/web.py", line 828, in get_template_namespace 
    namespace.update(self.ui) 
TypeError: 'NoneType' object is not iterable 

そして、ここではコードです:

class MainHandler(tornado.web.RequestHandler): 
    def get(self): 
     # product = self.get_argument('product-type', '') 
     apikey = self.get_argument('apikey', '') 
     domain = self.get_argument('domain', '') 
     start = self.get_argument('start', '') 
     end = self.get_argument('end', '') 
     urls = domain.split(",") 
     for u in urls: 
      filePath = u + "_" + start + "_" + end + ".csv" 
      if apikey: 
       results = max_concurrents(apikey, u, start, end, save_to=True) 
       if filePath: 
        print filePath + 'valid' 
        self.render('index.html', data=filePath, domain=u, start=start, end=end) 
      else: 
       print filePath + 'invalid' 
       self.render('index.html', data=filePath) 

    def post(self): 
     # product = self.get_argument('product-type', '') 
     apikey = self.get_argument('apikey','') 
     domain = self.get_argument('domain','') 
     start = self.get_argument('start','') 
     end = self.get_argument('end','') 
     urls = domain.split(",") 
     for u in urls: 
      filePath = u + "_" + start + "_" + end + ".csv" 
      print filePath 
      print r 

答えて

1

それがためにはNoneです何かを反復処理されることを意味します。私は、反復のためにurlがNoneと思われます。

デバッグを追加して、urlがNoneか何か値があるかどうかを調べます。

+0

'domain'がNoneの場合、' urls = domain.split( "、") ' –

+0

に誤りがあります。それを指摘してくれてありがとう^) – Li357

0

RequestHandler.render()を複数回呼び出すことはできません。これはリクエストを終了します(ハンドラを無効な状態にしておき、レンダリング後に通常は戻す必要があります)。すべてのテンプレートレンダリングを連結したいだけの場合は、self.write(self.render_string('index.html', ...))を呼び出すことができます。

関連する問題