构建一个可包含的模板作为字符串 [django]
build an includable template as string [django]
我想为我的导航建立一个可点击链接列表,因为这些是我网站的链接,所以我想使用 url-标签。我得到一个字典列表,它知道链接的所有名称,并使用此函数创建一个模板字符串:
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'] + "'"
所以第一个方法将 return 一个模板,看起来像这样(但它们都在同一行代码中):
<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 代码(根本不是最佳实践,因为我需要使用绝对路径)
有什么好的解决办法吗?
先谢谢了,
阿斯奇尔
你让事情变得比需要的更复杂。
首先,您需要将其解释为模板的唯一原因似乎是它解析 url
标记。但是已经有一种在 Python 代码中创建链接的方法,那就是 reverse()
function。你应该改用它。
其次,动态生成模板内使用的内容的方法是使用 custom template tag.
我想为我的导航建立一个可点击链接列表,因为这些是我网站的链接,所以我想使用 url-标签。我得到一个字典列表,它知道链接的所有名称,并使用此函数创建一个模板字符串:
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'] + "'"
所以第一个方法将 return 一个模板,看起来像这样(但它们都在同一行代码中):
<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 代码(根本不是最佳实践,因为我需要使用绝对路径)
有什么好的解决办法吗? 先谢谢了, 阿斯奇尔
你让事情变得比需要的更复杂。
首先,您需要将其解释为模板的唯一原因似乎是它解析 url
标记。但是已经有一种在 Python 代码中创建链接的方法,那就是 reverse()
function。你应该改用它。
其次,动态生成模板内使用的内容的方法是使用 custom template tag.