2016-05-02 8 views
1

Momentan enthält meine Website zwei Dropdown-Felder, deren Werte sich bei der Übergabe in zwei URL-Parameter "myState" und "myShelter" übersetzen lassen. Zum Beispiel:Umgang mit fehlenden Parametern in URL mit Flask/Python 3

https://www.atweather.org/forecast?myState=CT&myShelter=181

bin Hinzufügen ich jetzt ein drittes Feldes, und es wird ein dritte entsprechender Parameter namens „myTrail“ sein. Meine Frage ist folgende: Wie kann ich es so machen, dass, wenn jemand direkt eine URL mit nur zwei Parametern übermittelt, der Browser nicht mit einer schlechten Anfrage ausfällt? Ich möchte, dass der Benutzer die Seite so sieht, als ob "myState" und "myShelter" ausgewählt wurden, aber "myTrail" wurde gerade nicht ausgewählt.

Ich habe versucht, here und here zu suchen, aber ich denke nicht, dass dies die gleiche Situation ist, nach der ich frage. Ich verwende Flask unter Python 3 und zur Zeit diese Route handhaben wie so:

@app.route('/forecast', methods = ['GET']) 
def forecast(loc_state = None, loc_id = None): 

    """ 
    Handles rendering of page after a location has been selected 
    """ 

    loc_state = request.args['myState'] 
    loc_id = int(request.args['myShelter']) 

    ...and a bunch of other logic for rendering the page... 

Vielen Dank im Voraus für jede Einsicht!

+1

Ich sehe nicht, wie meine Frage ein Duplikat der genannten Frage ist. Ich kann sehen, wo die Verwendung der "dict" -Methode "get" für mich nützlich sein könnte, aber der Kontext meiner Frage ist überhaupt nicht in diesem Thread vorhanden. –

+0

'request.args' ist eine dict-Unterklasse. Wie bei jedem anderen Diktat verwenden Sie 'get', wenn Sie versuchen möchten, einen Wert zu erhalten, ohne einen Fehler zu erzeugen. Die Tatsache, dass Sie Flask verwenden, ist nicht wirklich relevant, die folgende Antwort ist die gleiche wie die anderen Antworten. – davidism

+0

Beachten Sie auch, dass das Hinzufügen dieser Parameter zur View-Funktion keine Rolle spielt. Parameter werden aus den erfassten URL-Werten und nicht aus den Abfrageargumenten gefüllt. – davidism

Antwort

1

Die request.args.get() Methode ermöglicht es, das Argument zu erhalten, wenn es existiert.

# return None if the argument doesn't exist 
trail = request.args.get('myTrail') 

# return 'x' if the argument doesn't exist 
trail = request.args.get('myTrail', 'x') 

Danach behandeln Sie einfach den Wert, um zurück zu geben, wie Sie wollen.

Verwandte Themen