Comment flasher un message avec un lien à l'aide de Flacon de flash?
Je suis de la création d'une application web à l'aide de ballon à traiter avec GoogleOpenID, ces codes sont presque finis, à l'exception du clignotant message contient un lien:
@oid.after_login
def create_or_login(resp):
user = db_session.query(User).filter_by(email=resp.email).first()
if user is not None:
flash('Successfully signed in', 'success')
else:
user = User(nickname=resp.fullname, source=GOOGLE, email=resp.email)
db_session.add(user)
db_session.commit()
flash(flashing_message, 'success')
g.user = user
session['nickname'] = user.nickname
return redirect(oid.get_next_url())
Il fonctionne bien quand flashing_message est comme ceci: 'Successfully registered, please click here'
Mais quand flashing_message est 'Successfully registered, please click <a href="/me" class="alert-link">here</a>'
, il ne fonctionne pas (clignote rien) sans jeter de l'Erreur. Étrangement, les phrases entre flash() et de retour ne fonctionne pas non plus (n'a pas mis de session['pseudo] ou g.de l'utilisateur).
OriginalL'auteur kxxoling | 2014-01-21
Vous devez vous connecter pour publier un commentaire.
Les autres réponses ici l'accent sur la modification de votre modèle afin de permettre à tous les messages flash pour être marqués comme sécurisés, ce qui peut ne pas être ce que vous voulez.
Si vous voulez juste pour marquer certaines flashé messages que coffre-fort, envelopper le texte adopté à flash() dans le Balisage(). (Flacon API Docs pour le Balisage)
Par exemple, au lieu de:
Enroulez la corde dans le Balisage() comme ceci:
Comme toujours, vous devez importer le Balisage de la fiole package quelque chose comme:
C'est la meilleure réponse.
Génial, merci!
OriginalL'auteur Pete Watts
Vous avez besoin pour rendre un template après l'appel de
flash()
qui doit ensuite passer le message à l'aide deget_flashed_messages()
.Vous avez besoin d'ajuster votre code pour appeler un modèle après l'appel de flash(). flash envoie le message à la prochaine requête qui peut être extraite par le modèle. Le modèle peut ressembler à quelque chose comme:
Dans votre code de vue, je voudrais ajouter une
render_template
juste après le flash (). Quelque chose comme:OriginalL'auteur codegeek
Échapper HTML est le comportement par défaut, pour passer à travers la
safe
filtre pour afficher le code HTML sans échappement:Quelle erreur avez-vous? Vous devez être le plus descriptif.
cause, il ne renvoie pas de message d'Erreur, je suis très confus. Mais j'ai découvert que si il y a une balise html dans clignotant message, il semble ne fonctionnent pas à l'ensemble de la session ou de g.de l'utilisateur.
Comment savez-vous que cela ne fonctionne pas? Vous exécutez le serveur de développement
debug=True
?Oui, le mode de débogage est vrai. Dans ce cas, il redirige vers /auth, mais si "pseudo" dans la session ou de g.l'utilisateur résister, une page de redirection vers / comme prévu. J'ai aussi essayé de changer la partie supérieure flashing_message de test, enfin je trouve qu'il doit être quelque chose de mal avec le html dans flash(), mais en toute sécurité le filtre ne fonctionne pas.
OriginalL'auteur Blender
Je ne suis pas sûr si c'est correct, mais la façon dont j'ai résolu ce problème a été en déclarant une variable dans la fonction qui était une chaîne de HTML, puis en le passant à travers un
render_template()
fonction.Et dans le modèle transmis par le biais de la
safe
filtre.Par exemple, (à peu près) le code que vous avez fournie:
Ensuite dans le modèle, j'ai ajouté un supplémentaire si l'instruction à l'intérieur de la
get_flashed_messages()
si:OriginalL'auteur m__