我正在編寫一個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