2014-03-04 3 views
0

올바른 방법이 무엇인지 보여주는 명시적인 가이드를 어디에서도 찾을 수 없습니다. 예를 들어, 장고 웹 사이트에 대해 django-two-factor-auth 패키지를 사용하고 있습니다. 컨텍스트 변수를 템플릿에 추가하여 표시하려고했습니다. 내 템플릿 폴더 안에 폴더 two_factor를 만들고 동일한 이름을 가진 템플릿 파일을 만들었습니다. 그 부분은 쉽습니다. 그러나 제 컨텍스트를 추가하기 위해 일반 뷰를 상속해야했습니다 (당연히 제 3 자 패키지의 소스 코드를 변경하고 싶지 않습니다). 이를 위해 나는 내 프로젝트 내에서 새로운 응용 프로그램을 작성 two_factor_custom을 불러 views.py의 코드를 다음 추가 :django에서 써드 파티 패키지를 커스터마이징하는 방법

from binascii import unhexlify 
from base64 import b32encode 
from two_factor.views.core import SetupView 

class SetupViewCustom(SetupView): 
    def get_context_data(self, form, **kwargs): 
    context = super(SetupViewCustom, self).get_context_data(form, **kwargs) 
    if self.steps.current == 'generator': 
     key = unhexlify(self.get_key('generator').encode('ascii')) 
     context.update({ 
      'secret': b32encode(key).decode('ascii') 
     }) 
    return context 

이 연장 또는 일부를 대체하는 올바른 방법이라고 말할 수 있다면 감사하겠습니다 타사 패키지의 동작 내가 잘못한 게 아니라면?

+0

앱을 확장하는 데 올바른 방법이없고 클래스를 확장하고 메소드를 재정의하는 것이 탁월한 접근 방식입니다. – almalki

+0

왜 이것이 잘못된 방법이라고 생각하십니까? –

답변

1

고유 한 템플릿 컨텍스트 프로세서를 추가하여 템플릿 컨텍스트를 확장 할 수 있습니다. Django documentation을 참조하십시오. 라는 상황에 맞는 프로세서 - - 자신의 인수로 요청 객체를 받아 항목의 사전 컨텍스트에 병합로 돌아

TEMPLATE_CONTEXT_PROCESSORS 설정은 callables의 튜플이다.

관련 문제