如何使用Flask Flash闪烁带有链接的消息? [英] How to flashing a message with link using Flask flash?

查看:119
本文介绍了如何使用Flask Flash闪烁带有链接的消息?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Flask创建一个处理GoogleOpenID的网络应用,这些代码几乎完成了,除了闪烁的消息中包含一个链接:

I'm creating a web app using Flask to deal with GoogleOpenID, these codes are almost finished, except the flashing message contains a link:

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

当flashing_message像这样时,效果很好:'成功注册,请单击此处'

It works well when flashing_message is like this: 'Successfully registered, please click here'

但是在flashing_message被成功注册后,请单击< a href ="/me" class ="alert-link">此处</a>',它不起作用(不闪烁)而不会引发任何错误.奇怪的是,在flash()和return之间的句子也不起作用(未设置session ['nickname]或g.user).

But when flashing_message is 'Successfully registered, please click <a href="/me" class="alert-link">here</a>', it doesn't work (flashes nothing) without throwing any Error. Strangely, sentences between flash() and return doesn't work either (did not set session['nickname] or g.user).

推荐答案

此处的其他答案集中在更改模板上,以允许将所有Flash消息标记为安全,而这可能并不是您想要的.

The other answers here focus on changing your template to allow all flash messages to be marked as safe, which may not be what you want.

如果只想将某些闪烁的消息标记为安全,则将传递给flash()的文本包装在Markup()中.(用于标记的Flask API文档)

If you just want to mark certain flashed messages as safe, wrap the text passed to flash() in Markup(). (Flask API Docs for Markup)

例如,代替:

flash('Successfully registered, please click <a href="/me" class="alert-link">here</a>')

将字符串包装在Markup()中,如下所示:

Wrap the string in Markup() like this:

flash(Markup('Successfully registered, please click <a href="/me" class="alert-link">here</a>'))

和往常一样,您将需要从flask包中导入Markup,例如:

As always, you will need to import Markup from the flask package something like:

from flask import Markup

这篇关于如何使用Flask Flash闪烁带有链接的消息?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆