620 Stimmen

Wie kann ich die benannten Parameter aus einer URL mithilfe von Flask erhalten?

Wenn der Benutzer auf diese URL zugreift, die auf meiner Flask-App läuft, möchte ich, dass der Webdienst in der Lage ist, mit den nach dem Fragezeichen angegebenen Parametern umzugehen:

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

#Ich möchte nur in der Lage sein, die Parameter zu manipulieren
@app.route('/login', methods=['GET', 'POST'])
def login():
    username = request.form['username']
    print(username)
    password = request.form['password']
    print(password)

903voto

falsetru Punkte 353059

Verwenden Sie request.args, um analysierte Inhalte der Abfragezeichenfolge zu erhalten:

from flask import request

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

284voto

qqbenq Punkte 9555

Die URL-Parameter sind verfügbar in request.args, das ist ein ImmutableMultiDict das einen get Methode hat, mit optionalen Parametern für Standardwert (default) und Typ (type) - das ist ein callable, das den Eingabewert ins gewünschte Format konvertiert. (Siehe die Dokumentation der Methode für mehr Details.)

from flask import request

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

Beispiele mit dem obigen Code:

/meine-route?page=34               -> seite: 34  filter: '*'
/meine-route                       -> seite:  1  filter: '*'
/meine-route?page=10&filter=test   -> seite: 10  filter: 'test'
/meine-route?page=10&filter=10     -> seite: 10  filter: '10'
/meine-route?page=*&filter=*       -> seite:  1  filter: '*'

197voto

Inbar Cheffer Punkte 2187

Sie können auch Klammern <> in der URL der Ansichtsdefinition verwenden und dieser Eingabe wird in die Argumente Ihrer Ansichtsfunktion übergeben

@app.route('/')
def my_view_func(name):
    return name

66voto

Suchita Mukherjee Punkte 791

Wenn Sie ein einzelnes Argument in der URL übergeben haben, können Sie dies wie folgt tun

from flask import request
#url
http://10.1.1.1:5000/login/alex

from flask import request
@app.route('/login/', methods=['GET'])
def login(username):
    print(username)

Falls Sie mehrere Parameter haben:

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

from flask import request
@app.route('/login', methods=['GET'])
    def login():
        username = request.args.get('username')
        print(username)
        password= request.args.get('password')
        print(password)

Was Sie versucht haben funktioniert bei POST-Anfragen, bei denen die Parameter als Formulareingaben übergeben werden und nicht in der URL erscheinen. Wenn Sie tatsächlich eine Login-API entwickeln, ist es ratsam, POST-Anforderungen anstelle von GET zu verwenden und die Daten nicht für den Benutzer zugänglich zu machen.

Bei POST-Anfragen würde es wie folgt funktionieren:

#url
http://10.1.1.1:5000/login

HTML-Snippet:

  Benutzername : 
  Passwort : 

Route:

from flask import request
@app.route('/login', methods=['POST'])
    def login():
        username = request.form.get('username')
        print(username)
        password= request.form.get('password')
        print(password)

38voto

Manish Kumar Punkte 544

URL:

http://0.0.0.0:5000/user/name/

Code:

@app.route('/user//', methods=['GET', 'POST'])
def user_view(name):
    print(name)

(Bearbeitung: Leerzeichen in Formatzeichenfolge entfernt)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X