Django:如何在表单上的输入字段中添加任意html属性?

Use*_*ser 98 html django django-templates django-forms django-widget

我有一个输入字段,使用如下模板呈现:

<div class="field">
   {{ form.city }}
</div>
Run Code Online (Sandbox Code Playgroud)

其呈现为:

<div class="field">
    <input id="id_city" type="text" name="city" maxlength="100" />
</div>
Run Code Online (Sandbox Code Playgroud)

现在假设我想autocomplete="off"为渲染的输入元素添加一个属性,我该怎么做?或onclick="xyz()"class="my-special-css-class"

Gal*_*len 123

查看此页面

city = forms.CharField(widget=forms.TextInput(attrs={'autocomplete':'off'}))
Run Code Online (Sandbox Code Playgroud)

  • django文档是一个迷宫.很容易迷路 (41认同)
  • 那些没有采用"必需"和"自动对焦"等参数的属性呢? (4认同)
  • 好的谢谢.在我的情况下我使用ModelForm所以我没有明确定义表单字段(例如类AddressForm(forms.ModelForm):class Meta:model = models.Address)这是否意味着我不能使用ModelForm或者有什么特别的我需要做? (2认同)
  • 这个解决方案很糟糕,因为没有关注点分离。在我看来,HTML 属性不应该用 python 代码编写。米哈伊尔·科罗博夫的解决方案更为优越。 (2认同)

Mik*_*bov 109

对不起广告,但我最近发布了一个应用程序(https://github.com/kmike/django-widget-tweaks),这使得这些任务更加痛苦,因此设计人员可以在不触及python代码的情况下做到这一点:

{% load widget_tweaks %}
...
<div class="field">
   {{ form.city|attr:"autocomplete:off"|add_class:"my_css_class" }}
</div>
Run Code Online (Sandbox Code Playgroud)

或者,或者,

{% load widget_tweaks %}
...
<div class="field">
   {% render_field form.city autocomplete="off" class+="my_css_class" %}
</div>
Run Code Online (Sandbox Code Playgroud)

  • 不错的应用迈克,正是我在寻找的! (2认同)

Art*_*ioo 29

如果您使用"ModelForm":

class YourModelForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(YourModelForm, self).__init__(*args, **kwargs)
        self.fields['city'].widget.attrs.update({
            'autocomplete': 'off'
        })
Run Code Online (Sandbox Code Playgroud)

  • 好!现在无需明确定义所有小部件. (3认同)

Wto*_*wer 19

如果您正在使用ModelForm,除了__init__在他的答案中提供使用@Artificioo 的可能性之外widgets,Meta中还有一个字典:

class AuthorForm(ModelForm):
    class Meta:
        model = Author
        fields = ('name', 'title', 'birth_date')
        widgets = {
            'name': Textarea(attrs={'cols': 80, 'rows': 20}),
        }
Run Code Online (Sandbox Code Playgroud)

相关文件