我正在使用 Python/Flask/Jinja2 构建一个网站,其中涉及用户创建的列表。每个列表都有一个到期日期,因此每个列表要么处于活动状态,要么已过期。
每个列表都有自己的页面mysite.com/listings/<listing_id>
。过期的列表页面看起来与活动列表页面不同。差异可能很多,但页面的高级结构将是相同的(毕竟,两者都是同一网站上的列表)。
构建模板和逻辑的最佳方式是什么?我看到两个选项:
首先,我可以创建两个 Jinja2 模板:listing.html
和listing_expired.html
. 视图函数会判断一个列表是活跃的还是过期的,然后渲染合适的模板。缺点是这两个模板必须保持同步。
或者,我可以只有一个模板:listing.html
. 然后,模板中将包含用于测试列表是否过期的逻辑。如果模板过期,将使用模板的一部分,如果未过期,则使用另一部分(使用大if-else
声明)。
构建这个的正确方法是什么?