2011-03-04 3 views
5

RequestContext 변수는 단지 request.VARNAME처럼 액세스 할 수 있습니다클래스 기반 일반 뷰에서 RequestContext에 추가 된 변수를 읽는 방법은 무엇입니까? 정규 전망

def example(request, template_name='stuff_list'): 
    return render_to_response(template_name, 
     {'stuff_list': get_list_or_404(Stuff, foo=request.DEBUG)}, 
     context_instance=RequestContext(request)) 

을 ... 대신 context_instance을 설정하는 내가 기능 기반의 일반적인보기direct_to_template1

를 호출 할 수있는 어떻게 할 ReadContext에 추가 된 변수 읽기 class-based generic views ? 예를 들어

은 :

class ArticleListView(ListView): 
    template_name = 'stuff_list' 
    bar = request.DEBUG # This won't work. What should I use instead? 
    queryset = get_list_or_404(Stuff, foo=bar) 


1 어쨌든 class-based TemplateView로 대체됩니다.
Django 1.3의 새로운 기능으로 저는 이것을 사용하고 싶습니다.

답변

7

이 경우에는 콜백 (get_queryset())을 클래스 속성 대신 사용해야합니다. 클래스 속성은 옵션을 정적으로 제어 할 때 실제로는 단지 단축키이며 아주 단순한 것으로 만 제한됩니다. 좀 더 복잡한 작업이 필요할 때 콜백으로 전환하는 것이 좋습니다. 귀하의 경우에는

, 다음과 같은 코드가 작동합니다 : 자세한 내용은

class ArticleListView(ListView): 
    template_name = 'stuff_list' 

    def get_queryset(self): 
     return get_list_or_404(Stuff, foo=self.request.DEBUG) 

, see the documentation을.

+0

고마워, 새로운 클래스 기반의 일반 뷰는 내 애플리케이션을 더 깨끗하고 더 작게 만들었다. 장고 팀은 훌륭한 직장을 만들었습니다! –

6

RequestContext 매개 변수는 이고 일반 컨텍스트 변수입니다. 그냥 할 수 있어야합니다 {{VARNAME}}

+2

+1 누군가가이 사실을 알지 못할 수도 있습니다. 감사합니다. –