【问题标题】:Django 1.11 built-in and custom widget template locationsDjango 1.11 内置和自定义小部件模板位置
【发布时间】:2025-12-03 21:40:02
【问题描述】:

我正在尝试使用 Django 1.11 的新表单/小部件呈现功能以“新方式”编写自定义小部件,但由于缺乏示例以及缺乏文档而感到非常困惑:

来自Django docs

每个小部件都有一个 template_name 属性,其值例如 输入.html。内置小部件模板存储在 django/forms/widgets 路径。您可以为 input.html 通过定义 django/forms/widgets/input.html,例如。

我不清楚它所指的位置。这是否意味着在我的venv/lib/python2.7/site-packages/django/forms/ 目录中,我应该创建一个名为widgets/ 的新目录并将我的模板放在那里?因为那没有任何意义。还是我应该在我的项目目录下创建 django/forms/widgets/ 目录并将我的新模板放在那里?

【问题讨论】:

  • @Alasdair django 文档太可怕了。他们一直在写大量不相关的东西,比如代码 sn-ps,它甚至不属于任何文件名。所以我不知道在哪里使用这些 sn-ps。特别是对于小部件,如果您决定使用模板进行完全自定义的小部件,请在文档中找到该信息。

标签: django templates widget


【解决方案1】:

您不应在 Django 安装目录venv/lib/python2.7/site-packages/django 中添加、删除或更改文件。

要覆盖django/forms/widgets/input.html,您可以在模板目录之一中创建一个文件django/forms/widgets/input.html。您的模板目录取决于您的 TEMPLATES 设置。

【讨论】:

  • 但是“内置小部件模板存储在 django/forms/widgets 路径中”是什么意思?没有这样的目录包含任何文件,只有一个模块。
  • 默认模板在django/forms/templates
  • 谢谢,我现在发现我要找的是venv/lib/python2.7/site-packages/django/forms/templates/django/forms/widgets。文档没有说清楚。