Есть ли способ добавить более одной переменной в flask (правила для переменных) - PullRequest
0 голосов
/ 20 июня 2020

Есть ли способ создать динамические c URL-адреса в Python Flask с использованием нескольких переменных

Обычный случай:

from flask import Flask
app = Flask(__name__)

@app.route('/hello/<name>')
def hello_name(name):
   return 'Hello %s!' % name

if __name__ == '__main__':
   app.run(debug = True)

То, что я пытаюсь спросить это:

from flask import Flask
app = Flask(__name__)

@app.route('/hello/<name><your_pp><etc>')
def hello_name(name):
   return 'Hello %s!' % name 

if __name__ == '__main__':
   app.run(debug = True)

Возможно ли, если мы будем использовать преобразователи типа int: your_pp, et c?

Ответы [ 2 ]

0 голосов
/ 21 июня 2020

Я предполагаю, что вы пытаетесь выполнить такой запрос: host:port/hello?name=john&last_name=doe ...

Если это так, запрос case от flask может обернуть это в словарь следующим образом:

from flask import request
@app.route('/hello')
def query():
    args = request.args
    print(args)
    return "example string", 200

Напечатанное значение будет примерно таким: ImmutableMultiDict([('name', 'john'), ('last_name', 'doe'))])

Этот пост поможет вам больше https://pythonise.com/series/learning-flask/flask-query-strings

0 голосов
/ 20 июня 2020

Вам просто нужно указать разные параметры в определении метода

@app.route('/hello/<name><int:your_pp><float:etc>')
def hello_name(name, your_pp, etc):
    return 'Hello %s %d %f!' % (name, your_pp, etc)

Но это приводит к проблеме, поскольку код может разделяться иначе, чем ваши надежды, лучше используйте разделители, / тем больше общий

@app.route('/hello/<name>/<int:your_pp>/<float:etc>')
def hello_name(name, your_pp, etc):
    return 'Hello %s %d %f!' % (name, your_pp, etc)

Используйте как mydomain.com/hello/johnname/123/456.789

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...