gpt4 book ai didi

language-agnostic - 处理代码或模板中未定义的值?

转载 作者:行者123 更新时间:2023-12-02 17:43:17 26 4
gpt4 key购买 nike

我正在编写一个网络应用程序(用Python,这并不重要)。功能之一是人们可以对事物发表评论。我有一堂评论课,基本上是这样的:

class Comment:
user = ...
# other stuff

其中user是另一个类的实例,

class User:
name = ...
# other stuff

当然,在我的模板中,我有

<div>${comment.user.name}</div>

问题:假设我允许人们匿名发表评论。在这种情况下,comment.user 为 None(未定义),当然访问comment.user.name 会引发错误。处理这个问题的最佳方法是什么?我看到三种可能性:

  • 在模板中使用条件来测试该情况并显示不同的内容。这是最通用的解决方案,因为我可以将匿名评论的显示方式更改为“匿名发布”(而不是“由...发布”),但我经常被告知模板应该是无意识的显示机器而不包括这样的逻辑。另外,其他人可能最终会为同一应用程序编写替代模板,我觉得我应该让模板编写者的工作尽可能简单。
  • Commentuser 属性实现一个访问器方法,当真实用户未定义时,该方法返回虚拟用户对象。这个虚拟对象将具有 user.name = 'Anonymous' 或类似的内容,因此模板可以访问它并打印其名称,而不会出现错误。
  • 在我的数据库中放入一条与user.name = Anonymous(或类似内容)的用户相对应的实际记录,然后将该用户分配给无人登录时发布的任何评论。我知道我见过一些现实世界的系统以这种方式运行。 (phpBB?)

编写此类系统的人们是否普遍认为其中一个(或其他解决方案)是最好的?如果我采取一种方式与另一种方式相比,我应该注意哪些陷阱?谁给出了最好的解释,谁就会得到复选标记。

最佳答案

我会选择第一个选项,使用 if在模板中切换。

考虑本地化的情况:您可能会为每种语言使用不同的模板。您可以轻松本地化模板本身中的“匿名”情况。

此外,数据模型应该与输出端无关。如果您想测试用户是否有名称,您会在代码的其余部分做什么?检查== 'Anonymous'每次?

模板确实应该只关心输出数据,但这并不意味着它必须仅包含输出语句。你通常有某种 if user is logged in, display "Logout", otherwise display "Register" and "Login"模板中的案例。避免这些几乎是不可能的。

关于language-agnostic - 处理代码或模板中未定义的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2894758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com