【问题标题】:How to use flask flash messages in 2 different app.route如何在 2 个不同的 app.route 中使用烧瓶闪存消息
【发布时间】:2016-09-17 19:59:43
【问题描述】:

我是烧瓶框架的新开发人员,我被这些显示错误消息的方法卡住了,我不明白如何使用烧瓶闪存消息。我考虑了 3 或 4 天,我对如何处理这个问题有了一些想法。所以我的计划很简单,我在查看器中进行了一些身份验证登录。如果结果输出值为 false,它将产生错误代码,该错误代码将显示在我的登录页面中。以下是我实现我的想法的方式。

@app.route('/login/process', methods = ['POST'])
def loginprocess():
    username = request.form.get('user_name')
    passwd = request.form.get('user_passwd')
    userAdminAuth = userLogin.checkUserAdmin(username, passwd)
    userMemberAuth = userLogin.checkUserMember(username, passwd)
    if userAdminAuth == True and userMemberAuth == False:
      session['logged_in'] = True
      session['username'] = username
      return redirect(url_for('admin'))

    elif userAdminAuth == False and userMemberAuth == True:
      session['logged_in'] = True
      session['username'] = username
      return redirect(url_for('member'))

    else:
      error = 'Invalid username or password'
      return redirect(url_for('login'))

@app.route('/login')
def login():
    return render_template('login.html')

在 html 代码中我有这个

{% if error %}
    <div class="alert alert-danger" role="alert">
        <span class="glyphicon glyphicon-exclamation-sign"></span>
        <span class="sr-only">Error</span>
        {{ error }}
    </div>
{% endif %}

问题是如何传递变量

error = 'Invalid username or password'

在url路由中

@app.route('/login/process', methods=['POST'])

到url路由

@app.route('/login')

哦,无论如何你应该知道这个

<form action="/login/process" method="post">
  <div class="form-group">
    <div class="input-group">
      <div class="input-group-addon icon-custumized"><span class="glyphicon glyphicon-user"></span></div>
        <input type="text" name="user_name" class="form-control form-costumized" placeholder="Username">
      </div>
    </div>
    <div class="form-group">
      <div class="input-group">
        <div class="input-group-addon icon-custumized"><span class="glyphicon glyphicon-lock"></span></div>
          <input type="password" name="user_passwd" class="form-control form-costumized" placeholder="Password">
        </div>
      </div>
      <div class="btn-toolbar" role="toolbar" aria-label="action">
        <div class="btn-group" role="group" aria-label="action">
          <a class="btn btn-default btn-customized" href="#"><span class="glyphicon glyphicon-list-alt"></span> <span class="textsize">Register</span></a>
          <button type="submit" class="btn btn-default btn-customized"><span class="textsize">Login</span> <span class="glyphicon glyphicon-menu-right"></span></button>
        </div>
    </div>
</form>

【问题讨论】:

    标签: python python-3.x flask flash-message


    【解决方案1】:

    在 Python 中,你必须调用:

    flask.flash('This is the message')
    

    然后,在模板中使用get_flashed_messages 获取闪烁的消息并显示它们,例如:

    {% with messages = get_flashed_messages(with_categories=True) %}
        {% for category, message in messages %}
            <div class="flash {{category}}">{{message}}</div>
        {% endfor %}
    {% endwith%}
    

    Flask documentation 有一个非常简单和不错的例子。

    消息在一条路线中闪烁并在另一条路线中显示的事实不是问题。这正是 flask.flash 设计的用例!

    【讨论】:

    • url路由怎么样?当我尝试按照烧瓶文档中的指南进行操作时,我总是收到错误代码 304。我不知道如何解决这个问题。
    • @SufferProgrammer url 路由是什么意思?我认为我从未见过 304 错误代码。我不得不谷歌它看看它是什么;)
    • 您知道,在烧瓶文档中,您将
      设置为
      ,当我打开登录页面时,它返回错误代码 304。我还是不明白。
    • 我不知道。我通常设置&lt;form method="post" action="{{url_for('my_function_name')}}"&gt;
    • 好的,我先试试。感谢你的回答。 ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 2017-06-26
    相关资源
    最近更新 更多