2017-04-11 9 views
0

Ich versuche, einige TastyPie-Validierung zu machen, aber ich bin relativ neu bei Python (und Programmierung im Allgemeinen) und völlig neu bei TastyPie, so dass Hilfe willkommen ist.Wie nach mehreren Schlüsseln in einem Wörterbuch suchen und dann mit jedem von ihnen etwas tun?

bundle.data ist ein Wörterbuch, und ich

  1. Wollen Sie die Existenz der Schlüssel im Wörterbuch überprüfen, dann

  2. für den Wert der einzelnen Tasten etwas mehr Validierung tun.

Beispielcode:

class SampleClass(Validation): 

    def is_valid(self, bundle, request=None): 
     errors = defaultdict(list) 

     for number in (bundle.data['number_one'], bundle.data['number_two']): 
      if number not in bundle.data: 
       errors[number] = ['missing field'] 
      else: 
      # Do more stuff with number 

Was ist der pythonic Weg, um dies zu?

Ich denke, die for number in.... Anweisung und die if number not in bundle.data Anweisung sind redundant. Ist das korrekt? Wie kann ich die Überprüfung kombinieren, wenn beide Zahlen Schlüssel im Wörterbuch sind, und sie einem Variablennamen zuweisen, damit ich beides machen kann?

Danke!

Antwort

0

Es ist nicht Tastypie Problem. Es ist Python-Problem.

die Existenz Verwendung zu prüfen:

for key in [key1, key2]: 
    if key not in my_list: 
     # key not exist 
    else: 
     # key exist 

Und Ihr Code:

class SampleClass(Validation): 

    def is_valid(self, bundle, request=None): 
     errors = defaultdict(list) 

     for number in ('number_one', 'number_two'): 
      if number not in bundle.data: 
       errors[number] = ['missing field'] 
      else: 
       value = bundle.data[number] 
       # Do more stuff with number 

Ich denke, die für Nummer in .... Anweisung und der, wenn Nummer nicht in bundle.data Aussage sind redundant. Ist das korrekt?

Dieser Code hat keinen Sinn. Wenn key1 oder key2 nicht vorhanden sind, werden KeyError ausgelöst.

Wie kann ich die Überprüfung kombinieren, wenn beide Zahlen Schlüssel im Wörterbuch sind und sie einem Variablennamen zuweisen, damit ich mit beiden Sachen machen kann?

if key1 in data and key2 in data: 
    val1 = data[key1] 
    val2 = data[key2] 
Verwandte Themen