@@export
이라는 뷰가 있는데이 매개 변수는 version
이라는 선택적 매개 변수를 필요로하므로 @@export?version=3
과 같이 호출 할 수 있습니다.매개 변수에 따라 BrowserView에서 사용되는 템플릿을 변경하는 방법
각 버전이 서로 완전히 다를 수 있으므로 모든 버전을 함께 유지하는 거대한 템플릿을 사용하면 유지 관리가 어려울 수 있으므로 BrowserView의 __call__
메소드에서 동적으로 템플릿을 변경할 수 있다고 생각했습니다. , 다음과 같이 입력하십시오 :
class MyView(BrowserView):
template = ViewPageTemplateFile('default_template.pt')
def __call__(self):
version = self.request.get('version', None)
if version is not None:
self.template = ViewPageTemplateFile('export-{0}.pt'.format(version))
return self.template()
실제로 작동하지 않습니다. 그러나 실제로 디버깅 콘솔을 사용하여 다음과 같이 작동하게했습니다.
class MyView(BrowserView):
template = ViewPageTemplateFile('default_template.pt')
def __call__(self):
version = self.request.get('version', None)
if version is not None:
self.template = ViewPageTemplateFile('export-{0}.pt'.format(version))
return self.template(self)
return self.template()
if 코드 경로에서 반환되는 것에 유의하십시오.
동적으로 템플릿을 변경하는 다른 방법이 있습니까? 왜냐하면이 return self.template(self)
은 제게 정말 제정신이 아닌 것 같습니다.
각 옵션에 대한보기를 등록하고 '내보내기'보기를 사용 케이스에서 가능한 리다이렉트로 개조하고 있습니까? –
오류가 발생했거나 새 템플릿을 사용하지 않았습니까? – Mathias
@UlrichSchwarz 가능하면이 내보내기보기를 다른 서버에서 처리해야하므로 HTTP 라이브러리가 얼마나 좋은지 잘 모릅니다. – gforcada