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)
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)
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)
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)