我有一个包含Applicant
,title
和first_name
的{{1}}模型,我将这些列表传递给模板:
surname
问题是标题包含我需要在python中替换的狡猾字符( {% for applicant in applicants %}
<tr>
<td>{{ applicant.id }}</td>
<td>{{ applicant.title.replace('^','') }} {{ applicant.first_name }} {{ ed {%
</tr>
{% endfor %}
)
^
但这会导致模板中断
applicant.title.replace('^','')
如何在模板变量上运行python而不会导致此错误?
答案 0 :(得分:4)
对于这个简单的情况,您可以使用内置cut
过滤器,如下所示:
<td>{{ applicant.title|cut:"^" }} ...
如果您需要更复杂的内容,可以写一个Custom Template Filter。
例如, cut
就像这样实现:
def cut(value, arg):
"""Removes all values of arg from the given string"""
return value.replace(arg, '')
您可以轻松实现以下内容:
def myfilter(value):
"""sanitizes my output"""
for c in "_^/\\":
value = value.replace(c, '')
return value
并申请
<td>{{ applicant.title|myfilter }} ...
答案 1 :(得分:0)
如何在模板变量上运行python而不会导致此错误?
你不能,至少没有切换到不同的模板处理器。
使用Django,您应该在视图中执行所有数据转换。该模板仅用于最终渲染html。
你可以做的是使用不同的模板引擎(jinja2是一个受欢迎的选择),并使用它的输出作为你的回复内容。