웹 응용 프로그램을 작성하고 있습니다 (파이썬에서는 중요하지 않습니다). 기능 중 하나는 사람들이 사물에 대한 의견을 남길 수 있다는 것입니다. user
가 다른 클래스의 인스턴스코드 또는 템플릿에서 정의되지 않은 값을 처리합니까?
class Comment:
user = ...
# other stuff
이
class User:
name = ...
# other stuff
그리고 내 템플릿 물론
, 내가<div>${comment.user.name}</div>
이 : 나는 기본적과 같이, 코멘트를위한 클래스가 문제 : 사람들이 익명으로 의견을 게시 할 수 있도록 허용한다고 가정 해 봅시다. 이 경우 comment.user
은 None
(정의되지 않음)이며 물론 comment.user.name
에 액세스하면 오류가 발생합니다. 그 문제를 해결하는 가장 좋은 방법은 무엇입니까? 다음과 같은 세 가지 가능성이 있습니다.
- 템플릿의 조건부를 사용하여이 케이스를 테스트하고 다른 것을 표시합니다. 이것은 익명의 주석이 "Posted an ..."대신에 "Posted anonymous"라고 표시되는 방식을 바꿀 수 있기 때문에 가장 다재다능한 해결책입니다. 그러나 나는 종종 템플릿이 어리석은 디스플레이가되어야한다고 들었습니다. 그런 논리는 포함하지 않습니다. 또한 다른 사람들은 동일한 응용 프로그램에 대한 대체 템플리트 작성을 중단 할 수도 있습니다. 템플리트 작성자가 가능한 한 쉽게 작성해야하는 것처럼 느껴집니다.
- 실제 사용자가 정의되지 않은 경우 더미 사용자 객체를 반환하는
Comment
의user
속성에 대한 접근 자 메서드를 구현합니다. 이 더미 객체는user.name = 'Anonymous'
또는 그와 비슷한 것을 가지므로 템플릿이이 객체에 액세스하여 오류없이 이름을 인쇄 할 수 있습니다. user.name = Anonymous
(또는 그와 비슷한) 사용자에 해당하는 내 데이터베이스에 실제 레코드를 넣고 아무도 로그인하지 않은 경우 게시 된 모든 의견에 해당 사용자를 할당하십시오. 실제로 작동하는 실제 시스템을 보았습니다. 이 방법. (phpBB를?)
시스템의 이러한 종류의 쓰기 사람들 사이에서 통용 지혜가 거기에이 (또는 다른 솔루션) 어떤 약이 최고? 어떤 방향으로 가면 조심해야 할 함정이 있습니까? 가장 잘 설명하는 사람은 체크 표시를합니다.
현지화가 좋은 점은 생각하지 않았습니다. –