Flask - необязательные аргументы пути

Как я могу сделать путь / имя / int / float необязательным.

Итак, если бы я сделал: http: // локальный / Zeref /, он все равно работал бы, несмотря на то, что не вводил int или float.

И если бы я сделал http: // локальный / Zeref / 1 /, он будет использовать только name, а int, а не float.

Итак, что я могу сделать, чтобы сделать их необязательными?

Код:

import flask

win = flask.Flask(__name__)

@win.route("/<name>/<int:ints>/<float:floats>")

def web(name, ints, floats):
    return "Welcome Back: %s Your Int: %d Your Float: %f" % (name, ints, floats)

win.run("localhost", 80)

Отвечает ли это на ваш вопрос? Может ли Flask иметь необязательные параметры URL?

andrew_reece 28.11.2019 03:19
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
1
4 624
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

В Flask разрешены необязательные параметры.

Вы можете определить несколько правил для одной и той же функции. Вот документация по Регистрация маршрута URL.

Обновленный код:

import flask

win = flask.Flask(__name__)

@win.route('/<name>/', defaults = {'ints': None, 'floats': None})
@win.route('/<name>/<int:ints>/', defaults = {'floats': None})
@win.route("/<name>/<int:ints>/<float:floats>/")
def web(name, ints, floats):
    if ints!=None and floats!=None:
        return "Welcome Back: %s, Your Int: %d, Your Float: %f" % (name, ints, floats)
    elif ints!=None and floats==None:
        return "Welcome Back: %s, Your Int: %d" % (name, ints)
    return "Welcome Back: %s" % (name)

win.run(debug=True)

Когда Chrome или любой другой веб-браузер запрашивает любой из этих URL-адресов, Flask вызывает связанную функцию вместе с аргументами, указанными в URL-адресе. Если аргументов не указано или указано меньше, будут использоваться значения аргументов по умолчанию.

Скриншоты:

Три параметра:

Three parameters

Два параметра:

Two parameters

Один параметр:

One parameter

Идеально! Спасибо.

Zeref Dragneel 23.11.2018 12:23

Попробуй это

@win.route("/<name>/<int:ints>/<float:floats>")
def web(name, ints=None, floats=None):
if ints!=None and floats!=None:
    return "Welcome Back: %s, Your Int: %d, Your Float: %f" % (name, ints, floats)
elif ints!=None and floats==None:
    return "Welcome Back: %s, Your Int: %d" % (name, ints)
return "Welcome Back: %s" % (name)

Другие вопросы по теме