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()

Ich habe mehrere Eingänge und weiß nicht genau, wie viele. Auch wenn ich es wüsste, ist das echt nervig

nounX = self.get_argument('nounX') jedes Mal für jede empfangene Eingabe.

Kennt jemand einen besseren Weg, dies zu tun?

0
user455318 2 Dez. 2013 im 20:13

3 Antworten

Beste Antwort
def post(self):
    var_dump({ k: self.get_argument(k) for k in self.request.arguments }) 
0
user455318 2 Dez. 2013 im 16:46

Bei sich wiederholenden Aufgaben wie diesen ist es fast immer möglich, eine Schleife zu verwenden:

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
dm03514 2 Dez. 2013 im 16:26

Sie können dies versuchen

parameters = dict() 
for k in request.arguments.iterkeys(): 
  parameters[k] = self.get_argument(k, strip=False) 

Quelle: http://vmiroshnikov.com/post / 33383858889 / make-tornado-keep-blank-values-in-request-Argumente

0
zsljulius 2 Dez. 2013 im 16:19