Als de gebruiker toegang krijgt tot deze URL die in mijn flask-app wordt uitgevoerd, wil ik dat de webservice de parameters kan verwerken die achter het vraagteken staan:
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)
Antwoord 1, autoriteit 100%
Gebruik request.args
om de inhoud van de queryreeks te ontleden:
from flask import request
@app.route(...)
def login():
username = request.args.get('username')
password = request.args.get('password')
Antwoord 2, autoriteit 27%
De URL-parameters zijn beschikbaar in request.args
, een ImmutableMultiDictmet een get
methode, met optionele parameters voor standaardwaarde (default
) en type (type
) – wat een aanroepbare is die de invoerwaarde converteert naar het gewenste formaat. (Zie de documentatie van de methodevoor meer details.)
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)
Voorbeelden met de hierboven code:
/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: '*'
Antwoord 3, Autoriteit 20%
U kunt ook beugels en lt; & GT gebruiken; Op de URL van de weergave-definitie en deze ingang gaat u naar uw weergave Functie-argumenten
@app.route('/<name>')
def my_view_func(name):
return name
Antwoord 4, Autoriteit 7%
Als u een enkel argument hebt ingevoerd in de URL, kunt u het als volgt doen
from flask import request
#url
http://10.1.1.1:5000/login/alex
from flask import request
@app.route('/login/<username>', methods=['GET'])
def login(username):
print(username)
Als u meerdere parameters hebt:
#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)
Wat u probeerde te doen, werkt in het geval van postverzoeken waarbij parameters worden doorgegeven als formulierparameters en niet in de URL voorkomen. In het geval dat u een inlog-API daadwerkelijk ontwikkelt, is het raadzaam om u postverzoek te gebruiken in plaats van de gegevens aan de gebruiker te krijgen en bloot te leggen.
In geval van postverzoek, zou het als volgt werken:
#url
http://10.1.1.1:5000/login
HTML-snippet:
<form action="http://10.1.1.1:5000/login" method="POST">
Username : <input type="text" name="username"><br>
Password : <input type="password" name="password"><br>
<input type="submit" value="submit">
</form>
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)
Antwoord 5, Autoriteit 4%
URL:
http://0.0.0.0:5000/user/name/
Code:
@app.route('/user/<string:name>/', methods=['GET', 'POST'])
def user_view(name):
print(name)
(Bewerken: verwijderde ruimtes in de indelingsnoer)
Antwoord 6
Gebruik request.args.get(param)
, bijvoorbeeld:
http://10.1.1.1:5000/login?username=alex&password=pw1
@app.route('/login', methods=['GET', 'POST'])
def login():
username = request.args.get('username')
print(username)
password = request.args.get('password')
print(password)
Antwoord 7
Dit zou moeten werken
@app.route('/login$username=<username>$password=<password>', methods=['GET', 'POST'])
def login(username, password):
# you can add stuff
return f"Username: {username}\nPassword: {password}"
Antwoord 8
Het is heel eenvoudig. Laat me dit proces verdelen in twee eenvoudige stappen.
- Op de HTML-sjabloon, verklaart u de naam Attribuut voor gebruikersnaam en wachtwoord zoals deze:
<form method="POST">
<input type="text" name="user_name"></input>
<input type="text" name="password"></input>
</form>
- Wijzig vervolgens uw code als volgt:
from flask import request
@app.route('/my-route', methods=['POST'])
# you should always parse username and
# password in a POST method not GET
def my_route():
username = request.form.get("user_name")
print(username)
password = request.form.get("password")
print(password)
#now manipulate the username and password variables as you wish
#Tip: define another method instead of methods=['GET','POST'], if you want to
# render the same template with a GET request too