La anulación de la plantilla del widget Django no busca en el directorio de la plantilla del proyecto. ¿Como arreglar?

Estoy intentando anular una plantilla de widget integrada en Django 1.11. Parece que estoy haciendo todo lo que dicen los documentos a este respecto, pero para las plantillas de widgets, Django no está buscando nada en mi proyecto y recibo un error TemplateDoesNotExist.

Esto es lo que tengo para la anulación:

class MyFileWidget(widgets.FileInput): template_name = 'myapp/my_file_widget.html' 

La plantilla está definitivamente ahí. Si paso la plantilla a una llamada de render, me parece bien. El problema es una cuestión de caminos. Al llamar a render desde una vista, verifica lo siguiente:

projectroot / templates / myapp / my_file_widget.html djangoroot / forms / templates / myapp / my_file_widget.html

Cuando encuentra la plantilla en mi proyecto, la reproduce. Esto NO está sucediendo cuando proporciono la ruta de la plantilla en la clase anterior. En ese caso, no verifica en mis plantillas de proyecto, donde realmente existe el archivo, y comienza a verificar la ruta django, donde no lo hace. De ahí el mensaje de error.

Por lo tanto, no tengo ni idea de por qué el cargador verificará mis plantillas de proyecto en las llamadas de render, pero no podrá hacerlo al buscar el “nombre de plantilla” de la anulación del widget. ¿Algunas ideas?

De forma predeterminada, la configuración de FORM_RENDERER establece de forma predeterminada en 'django.forms.renderers.DjangoTemplates' .

Esto verifica el directorio de plantillas de sus aplicaciones (por ejemplo, projectroot/myapp/templates/myapp/my_file_widget.html ), pero no revisa los directorios de la plantilla de su proyecto (por ejemplo, projectroot/templates/myapp/my_file_widget.html ).

Si desea usar la misma configuración que su configuración de TEMPLATES , entonces debe usar el procesador de configuración de TemplatesSetting .

 FORM_RENDERER = 'django.forms.renderers.TemplatesSetting' 

También deberá actualizar la configuración de TEMPLATES para que Django aún pueda usar las plantillas de widget integradas. La forma más sencilla de hacerlo es agregar django.forms a INSTALLED_APPS . Consulte la documentación para obtener más información acerca de esto.