Python Flask - render_template не отображает переданные значения - PullRequest
0 голосов
/ 21 февраля 2019

Я новичок в Python и пытаюсь разработать простое веб-приложение.

В приведенном ниже коде я пытаюсь получить значения из БД, и разыскивая на странице HTML, я могу видеть страницу HTML, но не переданные значения.Пожалуйста, помогите мне здесь.Код Python

      @app.route('/userDetails', methods=['POST', 'GET'])
     def userDetails():

     if request.method == 'POST':
print('in get method')
userid = request.form['userId']
print('user id ', userid)
conn = mysql.connect()
cursor = conn.cursor()

# Get User Details
print('execut sql')
result = cursor.execute("SELECT * FROM tbl_user WHERE user_id= %s", [userid])
if result > 0:
    data = cursor.fetchall()
    for row in data:
        userId = row[0]
        name = row[1]
        userName = row[2]
        password = row[3]
        return render_template("userDetails.html", userId=userId, name=name, userName=userName, password=password)
else:
    return render_template('index.html')

cursor.close()

HTML-код ниже.

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
  <head>
    <title>Python Flask Bucket List App</title>


    <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" rel="stylesheet">
  </head>

  <body>

      <h3 class="text-muted">Python Flask App </h3>
      </div>
      <div class="jumbotron">
          <h1>Display User Details</h1>
        <div class="jumbotron">
            <form class=class="form-userDetails, action="/userDetails", method="POST">
                User ID:<input type="text" name="userId" class="form-control">
                Name <output name="name" id="name" for="userId" class="form-control"></output>
                User Name <output name="userName" id="userName" for="userId" class="form-control"></output>
                Password <output name="password" id="password" for="userId" class="form-control"></output>
                </br>
                <button id="btnretive" class="btn btn-lg btn-primary btn-block" type="submit">Retrive</button>

            </form>
     </div>

      <div class="Footer">
          <footer class="footer">
            <p>&copy; Company 2015</p>
          </footer>
      </div>

    </div>
  </body>
</html>

1 Ответ

0 голосов
/ 21 февраля 2019

@ DRaj, вы неправильно используете тег <output>.Из спецификации

Элемент вывода HTML () является контейнерным элементом, в который сайт или приложение может внедрить результаты вычислений или результаты действий пользователя.

Дополнительную информацию и пример см. На этой странице Mozilla .

Теперь, Flask использует шаблонизатор Jinja2 для своего рендеринга HTML.Таким образом, правильный способ вывода значений - ввести переменную python внутри Разделители выражений {{ ... }} в HTML и передать переменные методу render_template.

т.е.

<form class=class="form-userDetails, action="/userDetails", method="POST">
    User ID:<input type="text" name="userId" class="form-control">
    Name: {{ name }}
    User Name: {{ userName }}
    Password: {{ password }}
    </br>
    <button id="btnretive" class="btn btn-lg btn-primary btn-block" type="submit">Retrive</button>

</form>

и код Python должен быть: -

return render_template("userDetails.html", name=name, userName=userName, password=password)

См. Эту документацию дизайнера шаблонов Jinja для получения дополнительной информации.

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