2014-07-22 13 views
148

In Flask, come si estrae i parametri da un URL? Come posso estrarre parametri con nome da un URL usando flask e python?Python Flask come ottenere parametri da un URL?

Quando l'utente accede a questo URL in esecuzione sul mio pallone app, voglio il servizio web per essere in grado di gestire i parametri specificati dopo il punto interrogativo:

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

Solo un piccolo suggerimento per la sicurezza: non includere le password in richieste GET. https://security.stackexchange.com/questions/147188/is-it-bad-practice-to-use-get-method-as-login-username-password-for-administrato – palsch

risposta

250

Usa request.args per ottenere contenuti di stringa di query analizzata :

from flask import request 

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

I parametri URL sono disponibili in request.args, che è un MultiDict che ha un metodo get, con i parametri facoltativi per valore predefinito (default) e tipo (type) - che è un callable che converte il valore di input nel formato desiderato.

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) 

Esempi con il codice di cui sopra:

/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: '*' 
Problemi correlati