2013-03-06 4 views
0

매우 명확한 패턴처럼 보이기 때문에 개발자가 DRY를 준수하는 데 도움이됩니다. 예를 들어, 각보기로 전달할 수있는 특정 컨텍스트를 정의하십시오. 내가 아는 한, 이것을 할 방법이 없습니다.메타 : 사용자 정의 클래스 기반보기가없는 이유는 무엇입니까?

+2

무엇을 의미합니까? 클래스 기반 뷰 유형이 많습니다. 네가 원하는 걸 할 수있을거야. 자세히 설명해 주시겠습니까? – andrefsp

+0

클래스가 필요한 기능을 "확장"할 수 없습니까? 그렇지 않은 경우 다양한 데코레이터 패턴은 무엇입니까? –

+0

@andrefsp 예를 들어, 모든 템플릿에 대해 특정 방식으로 필터링해야하는 사용자의 개체 목록이 있다고 가정합니다 (템플릿 태그의 작업 일 수 있습니다. 예제로 사용하고 있습니다)), 모든보기에서 정의하고 싶지 않았습니다. 예를 들어 사용자 정의 기본 컨텍스트가있는 'LoggedInView'를 정의하고 다른 컨텍스트 정의로 확장 할 수있는 방법이 없습니까? –

답변

1

문서에 정의 된대로 모든 일반 클래스 기반보기를 확장하고 해당 메서드를 재정의 할 수 있습니다. 예를 들어, 뷰 자체를 정의하는 것 외에 정의 추가 컨텍스트 변수를 원한다면, 단지 get_context_data 방법을 사용하여 추가 또는

class CustomDetailView(DetailView): 
    model = MyModel 
    def get_context_data(self, **kwargs): 
     context = super(CustomDetailView, self).get_context_data(**kwargs) 
     context.update({ 
      "foo": "bar", 
      "baz": 999, 
     }) 
     return context 

을, 당신은에 포함된다 특정 믹스 인을 정의 할 수 있습니다 필요에 따라 모든보기.