You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Django模板中将多行条件渲染的input标签简化为单行实现?

解决方案:Django模板单行实现条件赋值

你遇到的问题是混淆了Django模板的变量渲染语法模板标签语法——你用了{% %}(模板标签块)来写表达式,但这种三元表达式应该放在{{ }}(变量输出块)里。

正确的单行写法应该是:

<input type="text" class="form-control" id="title" value="{{ model.title if model else '' }}" placeholder="Enter Title">

为什么原来的写法报错?

{% %}是用来执行模板标签逻辑(比如iffor循环)的,而你要的是输出一个变量值,所以必须用{{ }}包裹三元表达式。之前的写法把表达式放进了{% %}里,Django会把它当成一个未知的模板标签,自然会报Invalid block tag错误。

另一种可选写法:结合default过滤器

如果你的场景中model存在但model.title可能为空,也可以用default过滤器简化,但要先确保model存在(避免DoesNotExist错误),可以这样写:

<input type="text" class="form-control" id="title" value="{{ model.title|default:'' if model else '' }}" placeholder="Enter Title">

不过第一种三元表达式的写法更直观,也更贴合你的需求场景。

内容的提问来源于stack exchange,提问作者Vaheed01

火山引擎 最新活动