我正在将模型中的内容输出到模板,但是某些模型字段会调用存储在其他模型中的数据。这只发生在几个领域。我想知道与在模型中存储django标签相比,使用if
标签来评估这一点会更有效。
this question的答案说,在模型中存储django标签是一个坏主意而没有给出理由(尽管我认为其中一个原因可能是其他人可能会在数据库中注入一些标签)。假设数据库注入很少,有没有办法逃避存储在模型中的Django标记和过滤器。
或者更好的是,处理上述情况的最有效方法是多个字段中的一个模型字段调用另一个模型中存储的字段。
实施例:
这应该存储在我的模型中
<p>We focus on:</p>
{% for item in services %}
{% url service_view item.id as service_url %}
<ul>
<li><a href="service_url">{{item.title}}</a></li>
</ul>
{% endfor %}
输出它应该导致django解析相关的django标签,就像模板的一部分一样
答案 0 :(得分:1)
感谢Ned,我尝试实现它,但我发现它非常复杂,在便携性方面也是不利的。
然而,我在Django Snippets中找到了我需要的东西(不知道我为什么不先看那里)。它是一个非常有用的实用程序,称为render_as_template。
将其设置为自定义标记后,我需要的只是在{% render_as_template about_view.content %}
格式中使用它,并且模型中的标记被渲染为模型。
有关创建自己的自定义模板和代码的说明available here
答案 1 :(得分:0)
django-dbtemplates可能接近做你想做的事。
答案 2 :(得分:0)
您应该使用inclusion tags,然后将该标记包含在您希望呈现html的任何位置。模型应该只为变量生成值,而不是格式化。