解决Djanog中覆盖字段部件模板无效问题

Python 2018-08-23

起步

虽然这种场景很少见,但我还是希望能够在 admin 窗口中使用自己的表单。根据模板的载入顺序,从 Django 目录中的 forms/templates/django/forms/widgets/textarea.html 复制一份到项目的模板目录 : templates/django/forms/widgets/textarea.html 。给新模板添加了写修改后,重启 django。

发现这并不起作用

解决方法

这也难怪,都怪文档里写得实在是太模糊了。模板覆盖的正确步骤是:

  1. 在 settings.py,把 django.forms 加入到 INSTALLED_APPS 中;
  2. 在 settings.py,设置 FORM_RENDERER = 'django.forms.renderers.TemplatesSetting'

这样就能使用了,文档 django.forms.renderers.TemplatesSetting 中写得不明确,这种设置方式十分怪癖,如果要覆盖默认的小部件模板,则需要明确注册 django.forms ,让人很少会注意到这点。


本文由 hongweipeng 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

如果对您有用,您的支持将鼓励我继续创作!