Перенаправление на различные шаблоны на основе пользовательского ввода, удовлетворяющего оператору if / else в Flask - PullRequest
0 голосов
/ 15 марта 2020

Я хочу создать сайт, который принимает пользовательский ввод и проверяет, совпадает ли он с ключом в словаре, чтобы создать страницу с информацией о вводе. Я пытаюсь создать страницу с ошибкой, на которую пользователь будет направлен, если введет ввод, который не соответствует ни одной из клавиш.

Итак, у меня есть этот словарь:

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, но проблема сохраняется.

Любая помощь будет принята с благодарностью. Я также могу уточнить больше, если это будет необходимо. Спасибо!

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