【发布时间】:2018-03-31 19:55:36
【问题描述】:
我正在尝试覆盖 Django 1.11 中的内置小部件模板。在这方面,我似乎正在做文档所说的所有事情,但是对于小部件模板,Django 根本没有查看我的项目,并且我收到了 TemplateDoesNotExist 错误。
这是我的覆盖:
class MyFileWidget(widgets.FileInput):
template_name = 'myapp/my_file_widget.html'
模板肯定在那里。如果我将模板传递给渲染调用,它会发现它很好。问题是路径问题。从视图调用渲染时,它会检查以下内容:
projectroot/templates/myapp/my_file_widget.html djangoroot/forms/templates/myapp/my_file_widget.html
当它在我的项目中找到模板时,它会渲染它。当我在上面的类中提供模板路径时,这不会发生。在这种情况下,它不会签入我的项目模板(该文件实际存在的位置),并开始签入 django 路径,但它不存在。因此出现错误消息。
所以我不知道为什么加载器会在渲染调用时检查我的项目模板,但是在查找小部件覆盖的“template_name”时却没有这样做。有什么想法吗?
【问题讨论】:
标签: python django templates widget overriding