Django: Comment append des atsortingbuts HTML arbitraires aux champs de saisie d’un formulaire?

J’ai un champ de saisie qui est rendu avec un modèle comme ceci:

{{ form.city }}

Qui est rendu comme:

 

Supposons maintenant que je veuille append un atsortingbut autocomplete="off" à l’élément d’entrée rendu, comment ferais-je cela? Ou onclick="xyz()" ou class="my-special-css-class" ?

    Consultez cette page

     city = forms.CharField(widget=forms.TextInput(attrs={'autocomplete':'off'})) 

    Désolé pour la publicité, mais j’ai récemment publié une application ( https://github.com/kmike/django-widget-tweaks ) qui rend ces tâches encore moins pénibles pour que les concepteurs puissent le faire sans toucher au code python:

     {% load widget_tweaks %} ... 
    {{ form.city|attr:"autocomplete:off"|add_class:"my_css_class" }}

    Ou bien,

     {% load widget_tweaks %} ... 
    {% render_field form.city autocomplete="off" class+="my_css_class" %}

    Si vous utilisez “ModelForm”:

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

    Si vous utilisez ModelForm , outre la possibilité d’utiliser __init__ comme @Artificioo fourni dans sa réponse, il existe un dictionnaire de widgets dans Meta:

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

    Documentation pertinente