当前位置:  开发笔记 > 编程语言 > 正文

每当我将Python代码放入Django模板时,语法错误

如何解决《每当我将Python代码放入Django模板时,语法错误》经验,为你挑选了2个好方法。

我正在尝试在我的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.



1> Hannes Ovrén..:

我很确定Django模板不支持这一点.对于您的替换操作,我会研究不同的过滤器.

你真的应该尽量在你的视图中保留尽可能多的逻辑,而不是在模板中.


你可以改写你的答案,使其更强一些.故意禁止在模板中处理.您必须在视图函数中执行所有处理.

2> Peter Rowell..:

Django的模板语言故意蹒跚而行.当非编程设计人员使用时,这绝对是一件好事,但有时你需要做一些编程.(不,我不想争论这个.在django-users和django-dev上已经出现了好几次.)

完成你所尝试的两种方法:

使用其他模板引擎.有关与Django集成的完整解释,请参阅Jinja2.

使用允许您执行Python表达式的模板标记.请参阅limodou的Expr标签.

我在几个地方使用过expr标签,它让生活变得更轻松.我的下一个主要Django站点将使用jinja2.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有