Flask:在返回render_template()或redirect()中包含HTML

时间:2017-03-16 13:51:26

标签: python flask sqlite

我有一个登录表单,用于检查用户提供的用户名和密码是否在数据库中返回一行。如果是,则存储会话cookie并将用户发送回索引页面。如果没有,则再次将用户发回登录页面。

以下是相关代码的片段:

cur.execute("SELECT COUNT(*) FROM users WHERE username = ? AND password = ?", (request.form['username'], request.form['password']))

data = cur.fetchone()[0]

# If given username and password returns a row, create the session
if data == 0:
    return redirect(url_for('index'))
else:
    session['username'] = request.form['username']

当用户再次发送回登录页面时(redirect(url_for('index'))),我想在登录页面上包含一条消息,说明给定的用户名或密码无效。

我对如何做到这一点感到有点迷茫。

2 个答案:

答案 0 :(得分:1)

这称为消息闪烁。完整的文档是here,它是通过在视图侧添加消息然后在模板上呈现它们来完成的:

<!doctype html>
<title>My Application</title>
{% with messages = get_flashed_messages() %}
  {% if messages %}
    <ul class=flashes>
    {% for message in messages %}
      <li>{{ message }}</li>
    {% endfor %}
    </ul>
  {% endif %}
{% endwith %}
{% block body %}{% endblock %}

答案 1 :(得分:0)

http://flask.pocoo.org/docs/0.10/patterns/flashing/结帐flash。那应该做你想要的。只需处理index

模板中的Flash消息即可