django-templates 튜토리얼 - Django:폼의 입력 필드에 임의의 html 속성을 추가하려면 어떻게합니까?




editform field (5)

템플릿과 함께 렌더링되는 입력 필드가 있습니다.

<div class="field">
   {{ form.city }}
</div>

다음과 같이 렌더링됩니다.

<div class="field">
    <input id="id_city" type="text" name="city" maxlength="100" />
</div>

이제 autocomplete="off" 속성을 렌더링 된 입력 요소에 추가한다고 가정합니다. 어떻게 그럴 수 있습니까? 또는 onclick="xyz()" 또는 class="my-special-css-class" 입니까?


Answers

이 페이지 확인

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

ModelForm 을 사용 __init__ 있다면 그의 대답에서 제공되는 @Artificioo와 같은 __init__ 을 사용할 가능성을 제외하면 Meta에 widgets 사전이 있습니다.

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

관련 문서


"ModelForm"을 사용하는 경우 :

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

죄송합니다,하지만 최근에 이러한 작업을 훨씬 덜 고통스럽게 만드는 응용 프로그램 ( https://github.com/kmike/django-widget-tweaks )을 출시했습니다. 그래서 디자이너는 파이썬 코드를 건드리지 않고도 그렇게 할 수 있습니다.

{% load widget_tweaks %}
...
<div class="field">
   {{ form.city|attr:"autocomplete:off"|add_class:"my_css_class" }}
</div>

또는,

{% load widget_tweaks %}
...
<div class="field">
   {% render_field form.city autocomplete="off" class+="my_css_class" %}
</div>

https://docs.djangoproject.com/en/dev/ref/signals/#post-save 언급하고 @seler가 지적했듯이 예제를 통해 :

def keep_track_save(sender, instance, created, **kwargs):
    action = 'save' if created else 'update'
    save_duplicate((instance.id, instance.__class__.__name__, action))

post_save.connect(keep_track_save, sender=Group)






django django-templates django-forms django-widget html