1

我正在使用 Python/Flask/Jinja2 构建一个网站,其中涉及用户创建的列表。每个列表都有一个到期日期,因此每个列表要么处于活动状态,要么已过期。

每个列表都有自己的页面mysite.com/listings/<listing_id>。过期的列表页面看起来与活动列表页面不同。差异可能很多,但页面的高级结构将是相同的(毕竟,两者都是同一网站上的列表)。

构建模板和逻辑的最佳方式是什么?我看到两个选项:

首先,我可以创建两个 Jinja2 模板:listing.htmllisting_expired.html. 视图函数会判断一个列表是活跃的还是过期的,然后渲染合适的模板。缺点是这两个模板必须保持同步。

或者,我可以只有一个模板:listing.html. 然后,模板中将包含用于测试列表是否过期的逻辑。如果模板过期,将使用模板的一部分,如果未过期,则使用另一部分(使用大if-else声明)。

构建这个的正确方法是什么?

4

2 回答 2

1

您可以为此使用 jinja 模板继承。使用泛化您创建一个基本模板并使用两个子模板(列表和过期)和子块扩展此模板以创建您的视图。结论:三个没有大 if-else 的模板。

于 2013-01-20T02:58:44.737 回答
0

我认为最好的方法是拥有两个不同的模板并由它们继承高级结构。

于 2013-01-19T22:10:57.913 回答