Quando o usuário acessa esse URL em execução no meu aplicativo de balão, desejo que o serviço da Web possa manipular os parâmetros especificados após o ponto de interrogação:
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
fonte
fonte
Respostas:
Use
request.args
para obter o conteúdo analisado da string de consulta:fonte
app.route('/username=<username>&password=<password>')
? Dessa forma, você não escreve as linhas request.args.get.?
no início dos parâmetros, como você desejaapp.route('/?username=<username>&password=<password>')
, mas o Flask lerá tudo após o ponto de interrogaçãorequest.args
e não interpretará as variáveis da rota. Se você quiser chegar ao seu exemplo de rota usando um formulário HTML, precisará de um monte de JavaScript extra para fazê-lo funcionar. Por fim, as variáveis de rota são obrigatórias,request.args
podem ser opcionais.Os parâmetros de URL estão disponíveis em
request.args
, que é um ImmutableMultiDict que possui umget
método, com parâmetros opcionais para o valor padrão (default
) e o tipo (type
) - que é uma chamada que converte o valor de entrada no formato desejado. (Consulte a documentação do método para obter mais detalhes.)Exemplos com o código acima:
fonte
filter
é uma palavra reservada, não deve usar;)Você também pode usar colchetes <> no URL da definição de visualização e essa entrada será inserida nos argumentos da função de visualização
fonte
Se você tiver um único argumento transmitido na URL, poderá fazê-lo da seguinte maneira
Caso você tenha vários parâmetros:
O que você estava tentando fazer funciona em caso de solicitações POST em que parâmetros são passados como parâmetros de formulário e não aparecem na URL. Caso você esteja realmente desenvolvendo uma API de login, é recomendável usar a solicitação POST em vez de GET e expor os dados ao usuário.
Em caso de solicitação posterior, funcionaria da seguinte maneira:
Fragmento HTML:
Rota:
fonte
url:
código:
(Editar: espaços removidos na string de formato)
fonte
É realmente simples. Deixe-me dividir esse processo em duas etapas simples.
No modelo html, você declarará a etiqueta de nome para nome de usuário e senha como
Em seguida, modifique seu código como:
fonte
Use
request.args.get(param)
, por exemplo:Aqui está o link referenciado para o código.
fonte