【问题标题】:build an includable template as string [django]构建一个包含模板作为字符串 [django]
【发布时间】:2017-07-16 23:19:29
【问题描述】:

我想为我的导航建立一个可点击链接列表,因为这些是指向我网站的链接,所以我想使用 url-tag。我得到一个字典列表,它知道链接的所有名称,并使用此函数创建一个模板字符串:

def get_includable_template(links):
  output = '<ul>'
  for link in links:
    output = output + '<li><a href="{% url' + get_as_link(link) + '%}>" + link['shown'] + '</a></li>'
  output = output + '</ul>

links 看起来像这样:

links = [
  {'app': 'app1', 'view': 'index', 'shown': 'click here to move to the index'},
  {'app': 'app2', 'view': 'someview', 'shown': 'Click!'}
]

get_as_link(link) 看起来像这样:

def get_as_link(link):
  return "'" + link['app'] + ':' + link['view'] + "'"

所以第一个方法会返回一个模板,看起来像这样(但都在同一行代码中):

<ul>
  <li><a href="{% url 'app1:index' %}">click here to move to the index</a></li>'
  <li><a href="{% url 'app2:someview' %}">Click!</a></li>
</ul>

所以我希望将其解释为模板并包含到另一个模板中。


但是如何包含这个呢?

假设,我的另一个模板如下所示:

{% extends 'base.html' %} 
{% block title %}App 1 | Home{% endblock %}
{% block nav %}INCLUDE THE TEMPLATE HERE{% endblock %}
{% block content %}...{% endblock %}

我已经尝试过的:

  • 使模板字符串成为变量 - 不起作用,因为它不能解释变量中的模板语言(我找不到类似于 safe 的模板标签,它不仅可以解释 HTML 代码,还可以解释模板代码.
  • 在我的方法中构建 HTMl 代码(根本不是最佳实践,因为我需要使用绝对路径)

有没有好的解决方案? 提前致谢, 阿斯奇尔

【问题讨论】:

    标签: html django templates django-templates templatetag


    【解决方案1】:

    你让这变得比它需要的更复杂。

    首先,您需要将其解释为模板的唯一原因似乎是它可以解析url 标记。但是已经有一种在 Python 代码中创建链接的方法,那就是reverse() function。你应该改用它。

    其次,动态生成内容以供模板内部使用的方法是使用custom template tag

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      • 2018-02-02
      • 2023-03-14
      • 2015-05-31
      • 2011-02-17
      • 1970-01-01
      • 2016-10-08
      相关资源
      最近更新 更多