Я пытаюсь создать собственный виджет в администраторе Django. Я создал класс:
class FroalaWYSIWYGTextareaWidget(django.forms.widgets.Textarea):
template_name = 'froala_wysiwyg.html'
Тогда простая модельная форма:
class ArticleForm(django.forms.ModelForm):
class Meta:
fields = '__all__'
model = Article
widgets = {
'content': FroalaWYSIWYGTextareaWidget(),
}
Вот мои настройки:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_PATH, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.i18n',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
Обычно все работает отлично, и Django может найти шаблоны в каталоге /templates/, но в случае этого виджета у меня есть ошибка 500:
TemplateDoesNotExist at /admin/article/article/1/change/
froala_wysiwyg.html
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/article/article/1/change/
Django Version: 1.11.4
Exception Type: TemplateDoesNotExist
Exception Value: froala_wysiwyg.html
Exception Location: /home/username/.virtualenvs/sitename/lib/python3.5/site-packages/django/template/engine.py in find_template, line 148
Python Executable: /home/username/.virtualenvs/sitename/bin/python
Python Version: 3.5.2
Я отлаживал django.filesystem.loader и выяснил, что обычно Loader.engine.dirs - это список: ['/home/username/python/sitename/templates']
поэтому Loader.get_template_sources() отлично работает
но в случае этого пользовательского виджета этот loader.engine.dirs содержит только: ['/home/username/.virtualenvs/sitename/lib/python3.5/site-packages/django/forms/templates']
Поэтому он просто игнорирует параметр DIRS
из настроек и вместо этого использует формы/шаблоны. Это ошибка Django или мне нужно что-то изменить в настройках? Я не понимаю, откуда этот путь django/forms/templates
? Благодарю.