带有断线和重定向URL的Django消息

时间:2018-12-04 08:36:53

标签: django django-messages

我想在一些方面改进我的django message:在文本中添加breakline,并使用django reverse url添加网址。

这是我的信息:

messages.error(self.request, _(  f"The link to download the document has expired. Please request it again in our catalogue : {redirect to freepub-home}" 

我想通过在.之后添加新行来分隔消息,以获得类似这样的内容:

messages.error(self.request, _(  f"The link to download the document has expired. 
                                   Please request it again in our catalogue : {redirect to freepub-home}" 

然后,由于反向"freepub-home"的URL,如何在邮件中设置Django重定向?

先谢谢您!

编辑:

我克服了设置断线的问题:

messages.error(self.request, mark_safe(
            "The link to download the document has expired." 
            "<br />"
            "Please request it again in our catalogue : 
            <a href='{% url "freepub-home" %}'> my link </a>")

但是我至今还没有找到如何在内部传递Django URL的方法,因为我对引号和双引号有疑问。

1 个答案:

答案 0 :(得分:1)

您要传递给mark_safe的是一个纯字符串,它不会被解释为Django模板,因此您不能在其中使用模板标签语法。您必须使用reverse()函数来获取url和python字符串格式语法来构建消息:

from django.core.urlresolvers import reverse

# ...

    # using triple-quoted string makes life easier
    msg = """
        The link to download the document has expired. 
        <br />
        Please request it again in our catalogue : 
        <a href='{url}'> my link </a>
        """
    url = reverse("freepub-home")
    messages.error(self.request, mark_safe(msg.format(url=url)))