我正在尝试在我的Django模板中执行以下操作:
{% for embed in embeds %} {% embed2 = embed.replace("<", "<") %} {{embed2}}
{% endfor %}
但是,当我做这样的事情时,我总是得到一个无效的块或一些语法错误(我的意思是循环中的{%}}代码).Python没有{}来表示"范围"所以我认为这可能是我的问题?我格式化我的代码错了吗?
编辑:确切的错误是: Invalid block tag: 'embed2'
Edit2:由于有人说Django模板不支持我正在做的事情,我重写了代码,将逻辑放在视图中.我现在有:
embed_list = [] for embed in embeds: embed_list[len(embed_list):] = [embed.replace("<", "<")] #this is line 35 return render_to_response("scanvideos.html", { "embed_list" :embed_list })
但是,我现在收到一个错误:'NoneType' object is not callable" on line 35
.
我很确定Django模板不支持这一点.对于您的替换操作,我会研究不同的过滤器.
你真的应该尽量在你的视图中保留尽可能多的逻辑,而不是在模板中.
Django的模板语言故意蹒跚而行.当非编程设计人员使用时,这绝对是一件好事,但有时你需要做一些编程.(不,我不想争论这个.在django-users和django-dev上已经出现了好几次.)
完成你所尝试的两种方法:
使用其他模板引擎.有关与Django集成的完整解释,请参阅Jinja2.
使用允许您执行Python表达式的模板标记.请参阅limodou的Expr标签.
我在几个地方使用过expr标签,它让生活变得更轻松.我的下一个主要Django站点将使用jinja2.