Django覆盖表单HTML标签模板?

Rog*_*ger 7 django django-templates django-forms

在我的settings.py中,我已经设置好了

FORM_RENDERER = 'django.forms.renderers.TemplatesSetting'
Run Code Online (Sandbox Code Playgroud)

现在可以添加我自己的模板:

<project>/templates/django/forms/widgets/
Run Code Online (Sandbox Code Playgroud)

要么

<app>/templates/django/forms/widgets/
Run Code Online (Sandbox Code Playgroud)

这很棒!但是,我找不到的是我在哪里覆盖默认的html(表单)标签?

class TestForm(forms.Form):
    first_name = forms.CharField(label="First name", max_length=50)
    last_name = forms.CharField(label="Last name")
    nick_name = forms.CharField(required=False)
Run Code Online (Sandbox Code Playgroud)

上面的表单将呈现如下标签:

<label for="id_first_name">First name:</label>
Run Code Online (Sandbox Code Playgroud)

我想以不同的方式呈现标签.所以,我认为添加html标签模板会很容易:templates/django/forms/widgets/label.html

不起作用.正在浏览Django文档,但我找不到如何为标签做这个.显然,标签不是小部件.

https://docs.djangoproject.com/en/1.11/ref/forms/widgets/#built-in-widgets

我的问题,在哪里/如何更改默认标签?

enc*_*nce 1

覆盖 Django 中现有的表单小部件实际上是可以完成的。

首先,您需要添加'django.forms'到您的INSTALLED_APPS应用程序以将其视为应用程序。

INSTALLED_APPS = [
    ...
    "django.forms",
    ...
]
Run Code Online (Sandbox Code Playgroud)

然后附加FORM_RENDERER到您的settings.py

FORM_RENDERER = 'django.forms.renderers.TemplatesSetting'
Run Code Online (Sandbox Code Playgroud)

有关TemplatesSetting的更多信息可以在 Django 文档中找到。

之后,将您想要覆盖的所有小部件文件从该django/forms/widgets/文件夹复制到您自己的projectname/templates/django/forms/widgets文件夹中。定制吧!

我希望这有帮助。