Gdy użytkownik uzyskuje dostęp do tego adresu URL działającego w mojej aplikacji flask, chcę, aby usługa internetowa mogła obsługiwać parametry określone po znaku zapytania:
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)
python
web-services
flask
url-parameters
Alex Stone
źródło
źródło
Odpowiedzi:
Służy
request.args
do pobierania przeanalizowanej zawartości ciągu zapytania:źródło
app.route('/username=<username>&password=<password>')
? W ten sposób nie piszesz w ogóle wierszy request.args.get.?
na początku parametry, więc chciałbyśapp.route('/?username=<username>&password=<password>')
, ale Flask odczyta wszystko po znaku zapytania dorequest.args
i nie zinterpretuje zmiennych z trasy. Jeśli chcesz dostać się do swojej przykładowej trasy za pomocą formularza HTML, potrzebujesz dodatkowej obsługi JavaScript, aby działała. Wreszcie zmienne trasy są obowiązkowe,request.args
mogą być opcjonalne.Parametry URL są dostępne w
request.args
, który jest ImmutableMultiDict, który maget
metodę, z opcjonalnymi parametrami dla wartości domyślnej (default
) i type (type
) - która jest wywoływalna, która konwertuje wartość wejściową do pożądanego formatu. (Więcej informacji można znaleźć w dokumentacji metody ).Przykłady z powyższym kodem:
źródło
filter
to słowo zastrzeżone, nie należy używać;)Możesz także użyć nawiasów <> w adresie URL definicji widoku, a to wejście wejdzie w argumenty funkcji widoku
źródło
Jeśli w adresie URL podano jeden argument, możesz to zrobić w następujący sposób
W przypadku wielu parametrów:
To, co próbujesz wykonać, działa w przypadku żądań POST, w których parametry są przekazywane jako parametry formularza i nie pojawiają się w adresie URL. W przypadku, gdy faktycznie tworzysz interfejs API logowania, zaleca się, abyś używał żądania POST zamiast GET i udostępniał dane użytkownikowi.
W przypadku żądania wysłania działałoby to w następujący sposób:
Fragment HTML:
Trasa:
źródło
URL:
kod:
(Edycja: usunięte spacje w ciągu formatu)
źródło
To jest naprawdę proste. Podzielę ten proces na dwa proste kroki.
W szablonie HTML zadeklarujesz tag nazwy użytkownika i hasła jako
Następnie zmodyfikuj kod jako:
źródło
Użyj
request.args.get(param)
na przykład:Oto odnośnik do kodu.
źródło