Я хочу создать сайт, который принимает пользовательский ввод и проверяет, совпадает ли он с ключом в словаре, чтобы создать страницу с информацией о вводе. Я пытаюсь создать страницу с ошибкой, на которую пользователь будет направлен, если введет ввод, который не соответствует ни одной из клавиш.
Итак, у меня есть этот словарь:
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)
else:
return render_template('search_error.html')
С помощью html на обеих страницах как: 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>
search_error. html:
<!DOCTYPE html>
<title>SEARCH ERROR!</title>
<body>
<h2 style = "text-align:center; font-family:Arial, Helvetica, sans-serif;font-
size:24px;">
Looks like you didn't search for a valid animal name. Try checking your spelling!
<br>
<a href="/"> Go back to the home page! </a>
</h2>
</body>
Когда я пытаюсь запустить сайт, любые входные данные, которые я использую в форма (независимо от того, существует она в словаре или нет) направляет меня на страницу search_error. html. Я попытался превратить страницу с ошибкой в отдельный @ app.route и вместо этого перенаправить ее в оператор else, но проблема сохраняется.
Любая помощь будет принята с благодарностью. Я также могу уточнить больше, если это будет необходимо. Спасибо!