올바른 방법이 무엇인지 보여주는 명시적인 가이드를 어디에서도 찾을 수 없습니다. 예를 들어, 장고 웹 사이트에 대해 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
이 연장 또는 일부를 대체하는 올바른 방법이라고 말할 수 있다면 감사하겠습니다 타사 패키지의 동작 내가 잘못한 게 아니라면?
앱을 확장하는 데 올바른 방법이없고 클래스를 확장하고 메소드를 재정의하는 것이 탁월한 접근 방식입니다. – almalki
왜 이것이 잘못된 방법이라고 생각하십니까? –