【问题标题】:Render template tags when passing as variable in django在 django 中作为变量传递时渲染模板标签
【发布时间】:2021-10-27 15:29:05
【问题描述】:

我想将一些 html 作为变量中的字符串传递给模板,其中还包括一个链接: 如果我传递变量,则模板不调用标签。如果我使用 {{variable | safe}} 来逃避限制,但它仍然没有被调用。我认为我的想法有一个重大错误,或者是不可能做到这一点?我们的想法是最终从数据库中加载这些字符串,以向用户展示自定义的网页元素。

view.py:

def custom(request, slug):
    
    link = """<li><a href="{% url 'app:page'%}">Link</a></li>"""

    return render(request, 'basics/custom.html', {'link': link})

在网页custom.html中:

{{link | safe }}

【问题讨论】:

  • 模板怎么渲染的,可以分享一下吗。请注意,它是{% url ... %},而不是{% url: '... %}

标签: django templates variables


【解决方案1】:

您应该使用format_html 来构建HTML 片段以在您的模板中使用,并使用reverse 来解析网址

from django.urls import reverse
from django.utils.html import format_html


def custom(request, slug):
    link = format_html(
        '<li><a href="{}">Link</a></li>',
        reverse('app:page'),
    )

    return render(request, 'basics/custom.html', {'link': link})

【讨论】:

  • 非常感谢,这非常有帮助,并且比我尝试做的方法更好。我什至不知道 utils.html 函数。度过了我的一天
猜你喜欢
  • 2021-02-15
  • 2018-09-29
  • 2016-05-22
  • 2018-12-20
  • 2019-07-31
  • 1970-01-01
  • 2015-09-21
  • 2016-06-01
  • 1970-01-01
相关资源
最近更新 更多