我正在编写一个web应用程序(在Python中,并不重要)。其中一个特点是人们可以对事情发表评论。我有意见的一类,基本上像这样:处理代码中或模板中的未定义值?
class Comment:
user = ...
# other stuff
其中user
是另一个类的实例,
class User:
name = ...
# other stuff
当然,在我的模板,而且,我有
<div>${comment.user.name}</div>
问题:假设我允许用户匿名发表评论。在这种情况下,comment.user
是None
(未定义),当然访问comment.user.name
会引发错误。处理这个问题的最好方法是什么?我看到三种可能性:
- 在模板中使用条件来测试该情况并显示不同的内容。这是最通用的解决方案,因为我可以改变匿名评论的显示方式,比如“匿名发布”(而不是“发布者...”),但我经常被告知模板应该是无意识的显示机器,不包括这样的逻辑。另外,其他人可能会为同一个应用程序编写替代模板,我觉得我应该为模板编写者尽可能简化事情。
- 实现针对
Comment
当真正的用户是未定义的,返回一个虚设用户对象的属性user
存取方法。这个虚拟对象将有user.name = 'Anonymous'
或类似的东西,所以模板可以访问它并打印它的名称没有错误。 - 把一个实际的记录对应于用户与
user.name = Anonymous
(或类似的东西)我的数据库中,并指派该用户发布任何评论,当没有人在真实记录下来。我知道我已经看到了运行一些真实世界的系统这条路。 (phpBB?)
在写这些类型的系统的人中,是否有普遍的看法:哪些(或某种其他解决方案)最好?如果我以一种方式与另一种方式相比,我应该留意哪些缺陷?谁给出最好的解释会得到复选标记。
本地化的好处,我没想到 – 2010-05-25 02:02:16