Lorsque l'utilisateur accède à cette URL en cours d'exécution sur mon application flask, je souhaite que le service Web puisse gérer les paramètres spécifiés après le point d'interrogation:
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
la source
la source
Réponses:
Utilisez
request.args
pour obtenir le contenu analysé de la chaîne de requête:la source
app.route('/username=<username>&password=<password>')
? De cette façon, vous n'écrivez pas du tout les lignes request.args.get.?
au début des paramètres, donc vous le voudriezapp.route('/?username=<username>&password=<password>')
, mais Flask lira tout après le point d'interrogationrequest.args
et n'interprètera pas les variables de la route. Si vous souhaitez accéder à votre exemple d'itinéraire à l'aide d'un formulaire HTML, vous aurez besoin d'un tas de code JavaScript supplémentaire pour le faire fonctionner. Enfin, les variables de route sont obligatoires,request.args
peuvent être facultatives.Les paramètres d'URL sont disponibles dans
request.args
, qui est un ImmutableMultiDict qui a uneget
méthode, avec des paramètres facultatifs pour la valeur par défaut (default
) et le type (type
) - qui est un appelable qui convertit la valeur d'entrée au format souhaité. (Voir la documentation de la méthode pour plus de détails.)Exemples avec le code ci-dessus:
la source
filter
est un mot réservé, ne doit pas utiliser;)Vous pouvez également utiliser des crochets <> sur l'URL de la définition de la vue et cette entrée ira dans les arguments de votre fonction de vue
la source
Si un seul argument est passé dans l'URL, vous pouvez le faire comme suit
Si vous avez plusieurs paramètres:
Ce que vous essayez de faire fonctionne en cas de requêtes POST où les paramètres sont passés en tant que paramètres de formulaire et n'apparaissent pas dans l'URL. Dans le cas où vous développez réellement une API de connexion, il est conseillé d'utiliser la requête POST plutôt que GET et d'exposer les données à l'utilisateur.
En cas de demande de post, cela fonctionnerait comme suit:
Extrait HTML:
Route:
la source
url:
code:
(Modifier: espaces supprimés dans la chaîne de format)
la source
C'est vraiment simple. Permettez-moi de diviser ce processus en deux étapes simples.
Sur le modèle html, vous déclarerez la balise de nom pour le nom d'utilisateur et le mot de passe comme
Ensuite, modifiez votre code comme:
la source
Utilisez
request.args.get(param)
, par exemple:Voici le lien référencé vers le code.
la source