Я попытался создать несколько маршрутов за один раз, используя переменные из базы данных и цикл for.
Я пробовал это
temp = "example"
@app.route("/speaker/<temp>")
def getSpeakerAtr(temp):
return '''%s''' % temp
Работает очень хорошо. НО:
for x in models.Speaker.objects:
temp = str(x.name)
@app.route("/speaker/<temp>")
def getSpeakerAtr(temp):
return '''%s''' % temp
Не работает. Сообщение об ошибке:
Файл "/Users/yang/Documents/CCPC-Website/venv/lib/python2.7/site-packages/flask/app.py", строка 1013, в декораторе 02:03:04 web.1 | self.add_url_rule (правило, конечная точка, f, ** параметры)
** Причина, по которой я хочу использовать несколько маршрутов, заключается в том, что мне нужно получить полные данные объекта, запросив из маршрута. Например: если мы введем этот URL:
//.../speaker/sam
Мы можем получить объект со значением name как sam. Затем я могу использовать все значения в этом объекте, например, bio или что-то в этом роде. **
1 ответ
Вам не нужно несколько маршрутов. Только один маршрут, подтверждающий его значение, например:
@app.route('/speaker/<temp>')
def getSpeakerAtr(temp):
if not any(temp == str(x.name) for x in models.Speaker.objects):
# do something appropriate (404 or something?)
# carry on doing something else
Или о ваших настоящих намерениях:
@app.route('/speaker/<name>')
def getSpeakerAtr(name):
speaker = # do something with models.Speaker.objects to lookup `name`
if not speaker: # or whatever check is suitable to determine name didn't exist
# raise a 404, or whatever's suitable
# we have a speaker object, so use as appropriate
temp
или name
или как там вы его называете, затем используйте models.Speaker.objects
, чтобы выполнить поиск по этому имени, чтобы получить ваш объект. Если он не может его найти, 404 или что-то еще, в противном случае используйте возвращенный объект по своему усмотрению.
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.
temp
в вызове функцииgetSpeakerAtr(temp)
скроетtemp
, который определен надgetSpeakerAtr
. Значениеtemp
внутриgetSpeakerAtr
всегда будет тем, что было дано как часть URL после его части/speaker/
.