Я пытаюсь создать сайт в Flask, который:
- Принимает ввод пользователя
- Проверяет, соответствует ли ввод пользователя клавише в словаре
- Возвращает страницу со всеми соответствующими значениями
Пока у меня есть это:
@app.route('/')
def home():
return render_template("index.html")
и индекс. html:
<!DOCTYPE html>
<form action = "/">
WHAT ANIMAL DO YOU WANT? <br>
<input type = "text" name = "animal"><br>
<input type = "submit" value = "submit">
</form>
Я также импортировал созданный мной словарь (animal_dict), который выглядит примерно так:
animal_dict = {
1: {'Name':'Dog', 'Kingdom':'Animalia', 'Species':'C. lupus'},
2: {'Name':'Cat', 'Kingdom':'Animalia', 'Species':'F. catus'},
3: {'Name':'Squirrel', 'Kingdom':'Animalia', 'Species':'E. sibiricus'},
4: {'Name':'Brown Trout', 'Kingdom':'Animalia', 'Species':'S. trutta'}
}
Мой подход заключался в создании страницы, которая проверяла бы, соответствует ли ввод пользователя одному из животных в словарь, а затем определить переменные, которые я мог бы использовать на странице создания информации о животном:
@app.route('/animalpage')
def animalpage():
for i in animal_dict:
if request.form['animal'].title() == animal_dict[i]['Name']:
animal_name = animal_dict[i]['Name']
animal_kingdom = animal_dict[i]['Kingdom']
animal_species = animal_dict[i]['Species']
return render_template('animal_page.html', name = animal_name, kingdom = animal_kingdom, species = animal_species)
и animal_page. html будет выглядеть так:
<!DOCTYPE html>
<title> Here's the Pokemon Data! </title>
<body>
<p><h1>{{ name }}</h1></p>
<p><h1>{{ kingdom }}</h1></p>
<p><h1>{{ species }}</h1></p>
<a href="/"> Click me to go back to the home page! </a>
</body>
Но когда Я запускаю сайт и получаю сообщение об ошибке «UnboundLocalError: локальная переменная« animal_name », на которую ссылаются перед присваиванием»
Я думаю, что это может быть потому, что возвращение для animal_page. html со всеми этими определенными переменными запускается до для л oop. Но я не уверен, как его почистить, чтобы он работал. Я также импортирую animal_dict из другого файла .py, но лучше ли поместить его в этот app.py?
Любая помощь будет оценена. Я также могу уточнить больше, если это будет необходимо. Спасибо!