2016-09-17 19 views
0

フラスコフレームワークで新鮮なデベロッパーですが、エラーメッセージを表示するためにこれらのメソッドに固執しました。フラスコフラッシュメッセージを使用する方法がわかりません。私は3日か4日間それについて考えていましたが、私はこの問題をどのように処理するか考えました。私の計画はシンプルなので、私はビューアにいくつかの認証ログインを行います。値がfalseの出力が得られると、エラーコードが生成され、そのエラーコードがログインページに表示されます。ここに私の考え方をどのように実装したかがあります。 2つの異なるapp.routeでフラスコフラッシュメッセージを使用する方法

@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コードに私が持っているこの1

{% 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 %} 

質問は、私は、URLのルートでは、変数

​​

を渡すことができる方法である

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

ルート

@app.route('/login') 

ああ、あなたは、Pythonで、この1

<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> 

答えて

1

を知っている必要がありますとにかく、あなたが呼び出す必要があり:

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のユースケースです!

+0

URLルーティングはどうですか?フラスコのマニュアルからガイドを守ろうとすると、エラーコード304が表示されます。そして私はそれをどのように修正するのか分かりませんでした。 – SufferProgrammer

+0

@SufferProgrammer URLルーティングとはどういう意味ですか?私は304エラーコードを見たことがないとは思わない。私はそれを見てgoogleにしなければなりませんでした;) – zvone

+0

フラスコのドキュメントで

をに設定し、ログインページを開くとエラーコード304.私はまだそれを取得しません。 – SufferProgrammer

関連する問題