2014-07-22 16 views
148

In Flask, Wie extrahiere ich Parameter aus einer URL? Wie kann ich mit flask und python benannte Parameter aus einer URL extrahieren?Python Flask wie man Parameter von einer URL bekommt?

Wenn der Benutzer diese URL greift auf meinem Kolben App läuft, möchte ich die Web-Service in der Lage sein, die Parameter nach dem Fragezeichen angegeben zu behandeln:

http://10.1.1.1:5000/login?username=alex&password=pw1 

#I just want to be able to manipulate the parameters 
@app.route('/login', methods=['GET', 'POST']) 
def login(): 
    username = request.form['username'] 
    print(username) 
    password = request.form['password'] 
    print(password) 
+15

Nur ein kleiner Hinweis für die Sicherheit: include Sie Kennwörter nicht in GET-Anfragen. https://security.stackexchange.com/questions/147188/is-it-bad-practice-to-use-get-method-as-login-username-password-for-administratum – palsch

Antwort

250

Verwenden request.args um den Inhalt der Abfrage-String zu erhalten analysiert :

from flask import request 

@app.route(...) 
def login(): 
    username = request.args.get('username') 
    password = request.args.get('password') 
16

Die URL-Parameter in request.args verfügbar sind, die ein MultiDict ist, die ein get Verfahren, mit optionalen Parametern für Standardwert (default) und Typen (hat) - Dies ist eine Callable, die den Eingabewert in das gewünschte Format konvertiert.

from flask import request 

@app.route('/my-route') 
def my_route(): 
    page = request.args.get('page', default = 1, type = int) 
    filter = request.args.get('filter', default = '*', type = str) 

Beispiele mit dem Code oben:

/my-route?page=34    -> page: 34 filter: '*' 
/my-route      -> page: 1 filter: '*' 
/my-route?page=10&filter=test -> page: 10 filter: 'test' 
/my-route?page=10&filter=10  -> page: 10 filter: '10' 
/my-route?page=*&filter=*  -> page: 1 filter: '*' 
Verwandte Themen