2016-09-17 4 views
0

Je suis développeur frais dans le cadre de flask, et je suis resté bloqué sur ces méthodes pour montrer le message d'erreur, et je ne comprends pas comment utiliser flask flash message. J'y pensais depuis 3 ou 4 jours et j'ai eu une idée de la façon de gérer ce problème. donc mon plan est simple, je fais un login d'authentification dans mon viewer. S'il en résulte une sortie avec la valeur false, cela produira un code d'erreur et ce code d'erreur s'affichera sur ma page de connexion. Voici comment j'ai mis en œuvre mon idée.Comment utiliser flask flash messages dans 2 app.route différent

@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') 

Et dans le code html je celui

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

La question est de savoir comment puis-je passer la variable

error = 'Invalid username or password' 

En route url

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

à l'URL itinéraire

@app.route('/login') 

Oh de toute façon, vous devriez savoir celui

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

Répondre

1

En Python, vous devez appeler:

flask.flash('This is the message') 

Puis, dans l'utilisation du modèle get_flashed_messages pour obtenir les messages flashé et les afficher par exemple:

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

Flask documentation a un exemple très simple et agréable.

Le fait que le message clignote dans un itinéraire et s'affiche dans un autre n'est pas un problème. C'est exactement le cas d'utilisation flask.flash a été conçu pour!

+0

Que diriez-vous du routage d'URL? J'ai toujours eu le code d'erreur 304 quand j'essaye de suivre le guide de la documentation de fiole. Et je n'ai aucune idée de comment régler ça. – SufferProgrammer

+0

@SufferProgrammer Qu'entendez-vous par routage d'URL? Je ne pense pas avoir jamais vu un code d'erreur 304. Je devais google pour voir ce que c'était;) – zvone

+0

Vous savez, dans la documentation du flacon, vous définissez la

sur et quand j'ouvre ma page de connexion, il retourne code d'erreur 304. Je ne comprends toujours pas. – SufferProgrammer