Django 1.11에서 내장 된 위젯 템플릿을 재정의하려고 시도하고 있습니다. 이 점에서 문서가 말하는 모든 것을하고있는 것 같지만 위젯 템플릿의 경우 Django가 내 프로젝트를 전혀보고 있지 않으며 TemplateDoesNotExist 오류가 발생합니다.Django 위젯 템플릿 재정의가 프로젝트 템플릿 디렉토리에서 검색하지 않습니다. 어떻게 고치는 지?
는 여기에 내가 오버라이드에 대해이 작업은 다음과 같습니다
class MyFileWidget(widgets.FileInput):
template_name = 'myapp/my_file_widget.html'
템플릿은 분명히있다. 템플릿을 렌더링 호출에 전달하면 괜찮습니다. 문제는 경로 문제입니다. 뷰에서 렌더링 호출 할 때, 그것은 다음과 같은 검사 :
projectroot/템플릿/MyApp를/my_file_widget.html djangoroot/양식/템플릿/MyApp를/my_file_widget.html
내 프로젝트의 템플릿을 발견, 그것을 렌더링합니다. 위의 클래스에서 템플릿 경로를 제공 할 때 이것은 일어나지 않습니다. 이 경우 파일이 실제로 존재하는 내 프로젝트 템플릿에서 체크하지 않고 django 경로에서 체크인을 시작합니다. 따라서 오류 메시지.
로더가 렌더 호출시 내 프로젝트 템플릿을 검사하는 이유를 모르겠지만 위젯 재정의 "template_name"을 찾을 때 그렇게하지 못합니다. 어떤 아이디어?
방금 답변을 게시하려고했습니다. 그렇게 할 것입니다. 참고로 DjangoTemplates가 내 프로젝트 템플릿을 확인하지 못했습니다. 대신, 장고 템플릿을 보는 것, 그래서 그 비트가 정확한지 모르겠다. 또 다른 해결책은 폼별로 "default_renderer"를 할당하는 것입니다.하지만 물론 FORM_RENDERER를 변경하는 것이 더 좋습니다. – meesterguyperson
내가 말했듯이,'DjangoTemplates'는 의도적으로 프로젝트 템플릿을 확인하지 않습니다. 'django.contrib' 앱, 타사 또는 프로젝트의 일부인지 여부에 관계없이 템플릿 디렉토리에서 INSTALLED_APPS의 모든 앱을 확인해야합니다. 'projectroot/templates/myapp/my_file_widget.html'에 템플릿을 저장하고 있다면,'myapp'에는'projectroot/myapp/templates /'템플릿 디렉토리가 없습니다. – Alasdair
아, 잡았다. 나는 오해했다고 생각한다. 그러면 좋아 보인다. 그레 시아! – meesterguyperson