2012-04-02 27 views
6

我第一次使用Django(和Python),并且正在寻找可能包含或可能未包含值的包含模板的正确解决方案。Django中有条件的'with'标签

例如,此模板将始终定义一个“公司”,但它可能并不总是有“用户”定义。如果“用户”没有定义,那么一个应该被定义,像这样:

<% with guy=(user if user != None else company.admin_user) %> 

但我还没有找到实现这一目标的好方法。在某些情况下,用户将由模板的包含者定义,而在其他情况下,模板应该找到“默认”用户。

编辑:解决办法,按伊格纳西奥的答案,是这样的:

<% with guy=user|default:company.admin_user %> 

回答

8

您希望default过滤器。

+0

该示例中的变量'guy'在模板中的很多地方都有使用。有没有办法使用默认过滤器来定义一次?我想避免必须为变量的每次使用声明默认值。 – 2012-04-02 02:54:13

+0

我不记得过滤器是否用'with'工作。您可能需要尝试旧的语法。 – 2012-04-02 02:56:12

+0

对不起 - 我对Python和Django都很陌生 - 旧的语法是什么?我不是在寻找一种更有效的方式来完成这项任务,只是一种有效的方式。 :) – 2012-04-02 02:57:56