2013-12-02 9 views
0
class MergeHandler(tornado.web.RequestHandler):   
    def post(self): 
     noun1 = self.get_argument('noun1') 
     noun2 = self.get_argument('noun2') 
     noun3 = self.get_argument('noun3') 
     noun4 = self.get_argument('noun4') 
     noun5 = self.get_argument('noun5') 
     ... 
     noun25 = self.get_argument('noun25') 

     sys.exit() 

У меня есть умножители входных данных, и я точно не знаю, сколько. Даже если я знаю, действительно раздражает делатьполучить большое количество значений

nounX = self.get_argument('nounX') каждый раз для каждого введенного ввода.

Кто-нибудь знает лучший способ сделать это?

ответ

0
def post(self): 
    var_dump({ k: self.get_argument(k) for k in self.request.arguments }) 
0

При выполнении повторяющихся задач, как это почти всегда можно использовать цикл:

def post(self): 
    NUM_NOUNS_EXPECTED = 25 
    nouns = {} 
    for i in range(1, NUM_NOUNS_EXPECTED + 1): 
     key = 'noun{}'.format(i) 
     nouns[key] = self.get_argument(key) 

def post(self): 
    required_params = ['something', 'again', 'one', 'two', 'three', 'smile', 'here'] 
    for param in required_params: 
     self.get_argument(param) 
+0

ok, но если у меня есть имя ввода с другим именем, чем nounX? – user455318

+0

В какой-то момент я считаю, что вам нужно знать свои имена для их проверки, вы можете перечислить их как список и, по крайней мере, минимизировать строки кода, обновляя ответ – dm03514

+0

Видимо, это действительно просто. print (self.request.arguments) получит все значения post. Для меня это сработает. благодаря – user455318

Смежные вопросы