1

我想改进我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}" 

那么,由于反向 url to ,我如何在我的消息中设置 django 重定向"freepub-home"

提前谢谢你!

编辑 :

我克服了设置断线:

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,因为我有引号和双引号的问题。

4

1 回答 1

2

您传递给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)))
于 2018-12-04T09:14:49.747 回答